如何在Java中的JTextArea类中添加滚动条?

时间:2015-11-20 07:45:53

标签: java swing scrollbar jtextarea

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

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

但是在下面的JTextArea类代码中

public class MyTextArea extends JTextArea
{   
    public MyTextArea()
    {
        setEditable(true);
        setSize(500, 500);

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

}

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

这是我的JFrame类。

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);
    }
}

我的主要。

public static void main(String[] args) 
{
    new MyFrame();
}

2 个答案:

答案 0 :(得分:4)

只需将JTextArea包裹在JScrollPane ...

中即可
add(new JScrollPane(mytextarea));
当组件的内容大于滚动窗格可视区域时,

将显示滚动条

ScrollPane

您真正需要问的问题是,为什么要延长JTextArea?请查看Prefer composition over inheritance更多详情

答案 1 :(得分:2)

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

另外,如果你实际上没有扩展一个类(向它添加新功能),最好创建该类的实例并改为修改它们,但是,如果你这样做,你可以做类似的事情。这样:

public class MyTextArea extends JScrollPanel{   

    public JTextArea ta = new JTextArea();

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