【问题标题】:How to add a scroll bar in my JTextArea class in Java?如何在 Java 中的 JTextArea 类中添加滚动条?
【发布时间】:2016-02-22 15:08:41
【问题描述】:

首先,我知道如何在 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();
}

【问题讨论】:

  • 默认滚动条只会在组件大小超过滚动面板可视区域大小时才会出现

标签: java swing scrollbar jtextarea


【解决方案1】:

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

另外,如果您实际上并没有扩展一个类(向它添加新功能),最好创建该类的实例并修改它们,但是,如果您准备这样做,您可以执行类似的操作这个:

public class MyTextArea extends JScrollPanel{   

    public JTextArea ta = new JTextArea();

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

【讨论】:

  • setViewportView() 使整个框架成为一个文本区域。
  • @LordRixuel 这可能是您添加此组件的布局造成的。
【解决方案2】:

只需将JTextArea 包装在JScrollPane 中...

add(new JScrollPane(mytextarea));

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

你真正需要问的问题是,你为什么要扩展JTextArea?更多详情请看Prefer composition over inheritance

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 2014-07-07
    • 1970-01-01
    • 2021-04-25
    • 2021-08-23
    • 2020-07-31
    • 1970-01-01
    相关资源
    最近更新 更多