【问题标题】:JTextArea is repositioning and reziseing itselfJTextArea 正在重新定位和调整自身
【发布时间】:2016-03-03 17:22:44
【问题描述】:

我刚开始使用 Java 构建 GUI。现在我遇到了一个错误,导致 JTextArea 出现非常奇怪的行为。我用它来创建TextArea: `

public class gui{
    JTextArea ausgabe;
    public gui(){
     //Some other Stuff in here
     //
     //
     ausgabe = new JTextArea("Test \n Text",15,50);
     ausgabe.setSize(110, 170);
     ausgabe.setVisible(true);
     mainFrame.add(ausgabe);
     ausgabe.setLocation(170,20);
     ausgabe.setEnabled(false);
    }
 }

到目前为止,一切正常。但是我想要另一种方法来更改该区域的文本(使用ausgabe.setText("String");),该区域将自身重新定位到 JFrame 的 x,y = 0 并将其自身分层在所有其他 JFrame 元素之上。感谢您的帮助!

【问题讨论】:

  • Swing 使用布局管理器。布局管理器负责确定组件的大小和位置。您不应该尝试手动设置。文本区域使用 15、50 来确定其首选大小。阅读 Using Layout Managers 上的 Swing 教程中的部分以获取更多信息。另外,Swing 组件默认是可见的,所以不需要让文本区域可见。

标签: java swing jtextarea


【解决方案1】:

我强烈建议不要尝试与Layout Managers 抗争

对于一个简单的修复,使用JFrame 的默认布局管理器,就像这样

public class gui
{
    JTextArea ausgabe;

    public gui()
    { 
        ausgabe = new JTextArea("Test \n Text");
        mainFrame.add(ausgabe, BorderLayout.CENTER);
    }
 }

除了 JFrame 本身可见之外,您也不需要设置 Swing 组件。

然后您可以在动作侦听器等中调用setText()TextArea 应保持在同一位置。

【讨论】:

    猜你喜欢
    • 2015-01-09
    • 1970-01-01
    • 2021-05-01
    • 2012-08-21
    • 2013-12-16
    • 1970-01-01
    • 2016-06-22
    • 2011-02-05
    • 1970-01-01
    相关资源
    最近更新 更多