关于swing:如何在Java的JTextArea类中添加滚动条?

How to add a scroll bar in my JTextArea class in Java?

首先,我知道如何在JTextArea中添加滚动条。

1
2
JTextArea textarea = new JTextArea();
JScrollPane scrollbar = new JScrollPane(textarea);

但是在下面的以下JTextArea类代码中

1
2
3
4
5
6
7
8
9
10
11
12
public class MyTextArea extends JTextArea
{  
    public MyTextArea()
    {
        setEditable(true);
        setSize(500, 500);

        //JScrollPane scroll = new JScrollPane(this);
        // ...
    }

}

如何添加滚动条?我尝试使用JScrollPane,但是没有用。我尝试制作一种新方法,但是也没有用。

这是我的JFrame类。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class MyFrame extends JFrame
{    
    MyFrame()
    {
        setLayout(null);
        setTitle("Frame Title");
        setSize(600, 600);  

        MyTextArea mytextarea = new MyTextArea();
        add(mytextarea);

        setVisible(true);
        setDefaultCloseOperation(MyFrame.EXIT_ON_CLOSE);
    }
}

还有我的主力。

1
2
3
4
public static void main(String[] args)
{
    new MyFrame();
}


只需将JTextArea包装在JScrollPane ...

1
add(new JScrollPane(mytextarea));

当组件的内容大于滚动窗格的可视区域时,

将显示滚动条。

ScrollPane

您真正需要问的问题是,为什么要扩展JTextArea?看看"优先选择组合而不是继承"更多细节


在您发布的示例中,您没有在JTextArea中添加"滚动条",而是在JScrollPanel

中添加了JTextArea

此外,如果您实际上并没有扩展一个类(向它添加新功能),则最好创建该类的实例并对其进行修改,但是,如果您愿意这样做,则可以像这样的东西:

1
2
3
4
5
6
7
8
9
10
public class MyTextArea extends JScrollPanel{  

    public JTextArea ta = new JTextArea();

    public MyTextArea(){
        ta.setEditable(true);
        ta.setSize(500, 500);
        setViewPortView(ta);
    }
}