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

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

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

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

但是在下面的JTextAreaclass代码下面

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

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

}

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

这是我的 JFrame class。

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

在您发布的示例中,您没有添加 "a scrollbar in a JTextArea",而是将 JTextArea 添加到 JScrollPanel

此外,如果您实际上并未扩展 class(向其添加新功能),则最好创建该 class 的实例并修改它们,但是,如果您开始这样做,你可以这样做:

public class MyTextArea extends JScrollPanel{   

    public JTextArea ta = new JTextArea();

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

只需将 JTextArea 包装在 JScrollPane...

add(new JScrollPane(mytextarea));

当组件的内容大于滚动窗格的可视区域时将显示滚动条

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