在调整大小时调整其大小的可滚动 JTextArea
Scrollable JTextArea that adjusts its size on resize
我有一个包含多个面板的 JFrame。其中之一应包含给定大小的 JTextArea,如果文本超出该区域,它可以滚动,并根据框架大小调整大小。
问题是,当面板是 JPanel 的一个实例时,它在 window 或全屏尺寸下看起来都是我想要的,只要内容不超过当前区域,当它这样做时,它将 space 分配给其他组件,使它们在框架中缩小(这里应该显示滚动条)。
另一方面,当我使用 JScrollPane 时,我无法使其具有与 JPanel 相同的行为,同时保持适当的大小。实际上它似乎适应了它的内容,因为它是空的,所以它只有几个像素宽。
我怎样才能实现我正在寻找的东西?
提前致谢
按照保持正确大小的代码(JPanel):
add(new JPanel(){
{
input = new JTextArea(20,20);
input.setLineWrap(true);
input.setBackground(Color.WHITE);
input.setBorder(cb);
this.setLayout(new BorderLayout());
//this.setPreferredSize(new Dimension(20,20));
this.setBorder(eb);
this.add(input);
}
});
不要将文本区域添加到框架中。
this.add(input);
相反,您需要将包含文本区域的 JScrollPane 添加到框架:
this.add(new JScrollPane(input));
我有一个包含多个面板的 JFrame。其中之一应包含给定大小的 JTextArea,如果文本超出该区域,它可以滚动,并根据框架大小调整大小。
问题是,当面板是 JPanel 的一个实例时,它在 window 或全屏尺寸下看起来都是我想要的,只要内容不超过当前区域,当它这样做时,它将 space 分配给其他组件,使它们在框架中缩小(这里应该显示滚动条)。
另一方面,当我使用 JScrollPane 时,我无法使其具有与 JPanel 相同的行为,同时保持适当的大小。实际上它似乎适应了它的内容,因为它是空的,所以它只有几个像素宽。
我怎样才能实现我正在寻找的东西? 提前致谢
按照保持正确大小的代码(JPanel):
add(new JPanel(){
{
input = new JTextArea(20,20);
input.setLineWrap(true);
input.setBackground(Color.WHITE);
input.setBorder(cb);
this.setLayout(new BorderLayout());
//this.setPreferredSize(new Dimension(20,20));
this.setBorder(eb);
this.add(input);
}
});
不要将文本区域添加到框架中。
this.add(input);
相反,您需要将包含文本区域的 JScrollPane 添加到框架:
this.add(new JScrollPane(input));