在调整大小时调整其大小的可滚动 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));