【问题标题】:NetBeans Swing TextArea is not static, causes troubleNetBeans Swing TextArea 不是静态的,会引起麻烦
【发布时间】:2013-12-09 11:44:58
【问题描述】:

我创建了一个带有名为“outputTextArea”的 textArea 的 JFrame,我想在 textArea 中打印数据库查询的结果。但是,变量 outputTextarea 不是静态的,因此我不能在 main 方法中调用 setText() 方法来在 textArea 中打印 db 结果集。

我想知道如何将这个变量(私有 javax.swing.JTextArea outputTextArea;)设为静态,因为 NetBeans 不允许我编辑这个变量,因为它是在我拖放 textArea 时由 NetBeans 生成的。

【问题讨论】:

  • 您是否尝试过类似private static JTextArea hiddenTextArea 的方法,在其中设置文本,然后执行outputTextArea.setText(hiddenTextArea.getText())?

标签: java swing netbeans


【解决方案1】:

我遇到了同样的问题。 在 Netbeans IDE 8.0.2 中: 1) 在设计选项卡中 2)点击文本区域 3) 转到属性-> 代码 4) 变量修饰符 -> 添加静态。

它对我有用。

【讨论】:

    【解决方案2】:

    只需向您的类添加一个访问器方法来调整字段。例如:

    public void setTextAreaText(String newText) {
      outputTextArea.setText(newText);
    }
    

    然后任何人都可以参考你的类可以调整文本区域中的文本。请务必从事件调度线程中调用该方法。这通常通过SwingUtilities.invokeLater 实现

    SwingUtilities.invokeLater(new Runnable() {
      public void run() {
        myClassReference.setTextAreaText("Hello, World");
      }
    });
    

    如果这种事情对您来说是新事物,请参阅documentation on Event Dispatch Thread。使用 Swing 时,正确处理线程很重要。

    【讨论】:

    • 如何从Event Dispatch Thread调用方法(我知道threading是什么,但我不明白你说什么)。
    • 只是提醒一下,使用这种方式会擦除 JTextArea 上的先前文本。有趣的是,您是否想在每次执行查询时清除 textarea 或将新文本与前一个文本聚合。
    【解决方案3】:

    如果您只想编辑代码。

    使用其他编辑器打开代码,就像记事本之类的。如果你在自动生成代码之前删除GEN-BEGIN:initComponents,你也可以通过netbeans编辑代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-10
      • 2011-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-28
      相关资源
      最近更新 更多