【问题标题】:Scrollable JTextArea that adjusts its size on resize在调整大小时调整其大小的可滚动 JTextArea
【发布时间】:2016-01-14 02:17:08
【问题描述】:

我有一个带有多个面板的 JFrame。其中之一应该包含一个给定大小的 JTextArea,如果文本超出该区域,它可以滚动,并根据框架大小调整大小。

问题是,当面板是 JPanel 的实例时,它看起来像我想要的窗口或全屏大小,只要内容不超过当前区域,当它超过时,它需要给其他组件的空间,使它们在框架中缩小(这里应该显示滚动条)。

另一方面,当我使用 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);
            }
        });

【问题讨论】:

  • 这应该会引导您找到答案:stackoverflow.com/questions/7229226/…
  • 所以你是说 JPanel 给你正确的行为?或者两者都不做?在我们推荐解决方案之前,我们必须清楚问题是什么/期望的行为是什么。
  • this.add(input); - 应该是:this.add(new JScrollPane(input)); - 如果这没有帮助,那么发布一个正确的 SSCCE 来证明问题。
  • 最后一条评论很有魅力!太感谢了!我如何将此标记为已回答(因为没有回答响应,只有 cmets?:D

标签: java swing jpanel jscrollpane jtextarea


【解决方案1】:

不要将文本区域添加到框架中。

this.add(input); 

相反,您需要将包含文本区域的 JScrollPane 添加到框架中:

this.add(new JScrollPane(input)); 

【讨论】:

    猜你喜欢
    • 2013-12-16
    • 1970-01-01
    • 1970-01-01
    • 2013-08-25
    • 2011-02-05
    • 2011-04-20
    • 1970-01-01
    • 2012-08-14
    • 2013-03-07
    相关资源
    最近更新 更多