Java文本区域滚动窗格



我创建了一个文本区域,必要时(当文本太长,无法再阅读时),我需要在文本区域应用滚动条。

这是我写的代码,但由于某种原因,滚动条并没有真正出现?

    final JTextArea textArea = new JTextArea();
    textArea.setEditable(false);
    textArea.setBounds(10, 152, 456, 255);
    textArea.setBorder(border);
    textArea.setLineWrap(true);
    sbrText = new JScrollPane(textArea);
    sbrText.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
    panel_1.add(textArea);

请参阅此

 import javax.swing.*;
    public class TestFrame extends JFrame
{
    JTextAreaWithScroll textArea;
    public TestFrame ()
    {
        super ("Test Frame");
        setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
        setSize (300, 300);
        textArea = new JTextAreaWithScroll (JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
                                            JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        add (textArea.getScrollPane ());
    }
    public static void main (String[] args)
    {
        SwingUtilities.invokeLater (new Runnable()
        {
            public void run ()
            {
                TestFrame f = new TestFrame ();
                f.setVisible (true);
            }
        });
    }
}

class JTextAreaWithScroll extends JTextArea
{
    private JScrollPane scrollPane;
    public JTextAreaWithScroll (int vsbPolicy, int hsbPolicy)
    {
        scrollPane = new JScrollPane (this, vsbPolicy, hsbPolicy);
    }
    public JScrollPane getScrollPane ()
    {
        return scrollPane;
    }
}

来自http://forum.html.it/forum/showthread/t-1035892.html

  • 由于使用setBounds(),您必须删除使JTextArea在屏幕上具有绝对大小的代码行。这使其不可调整大小,并且JScrollPane仅在其内容可调整大小时工作。

    // wrong
    textArea.setBounds(10, 152, 456, 255);
    
  • 请阅读JTextArea和JScrollPane教程;请运行两个教程中的示例。

您向父级添加了两次TextArea(滚动窗格和面板)。将最后一行更改为

panel_1.add(sbrText);

确保preferredSizeviewportSize相同。滚动窗格将使用textArea的首选大小来调整自己的大小,如果文本区域的首选大小足够大,可以显示自己,则这可能会导致滚动条消失。

请再次阅读JTextArea和JScrollPane教程。

textArea.setPreferredSize(new Dimension(456, 255));
textArea.setPreferedScrollableViewportSize(new Dimension(456, 255));

相关内容

  • 没有找到相关文章

最新更新