【问题标题】:Using a JTextArea in a different class在不同的类中使用 JTextArea
【发布时间】:2020-03-09 08:11:04
【问题描述】:

我有一个使用 Swing UI Designer 创建的 GUI 类。 所有组件都自动设为私有,但现在我需要在 UI.class 外部名为 consoleTextArea 的变量中输出一些文本 当我将 consoleTextArea 设置为 public static 时,我收到一条错误消息“UI.form: Cannot bind: field is static: Indeed.UI.consoleTextArea”

...
public static JTextArea consoleTextArea;
...
...
UI.consoleTextArea.setText("abc");
...

\src\indeed\UI.form:无法绑定:字段是静态的:确实.UI.consoleTextArea

【问题讨论】:

  • 您必须显示相关代码。但是你为什么要让那个区域静止呢?你知道 setter 和 getter 是如何工作的吗?
  • 不,实际上我不知道,我是编程新手。学徒的第一年。你能把我链接到什么吗?当我没有将其设置为静态时,它说“无法从静态上下文中引用非静态字段”
  • 您不应该尝试在静态上下文中联系该字段,而是通过您的类的实例。你知道这意味着什么吗?
  • 不,我不确定。我认为如果我发布更多我的代码会更好,问题是它很多.. 我必须在我的代码中的不同点多次访问 JTextArea..
  • 老实说,我无意粗鲁,但您正在尝试编写对您来说太先进的代码,因为您不了解该语言的基础知识。这是关于静态上下文的:stackoverflow.com/questions/28044873/…w3schools.com/java/java_encapsulation.aspgetter 和 setter

标签: java swing netbeans jtextarea


【解决方案1】:

您可以通过 UI 类的实例更改标签/textArea 的值。

public class UI {

  // ...

  private TextArea consoleTextArea = new TextArea();
  //
  public void setTextInTextArea(String text) {
    this.consoleTextArea.setText(text);
  }
}

拥有这样的设置器,您可以在不同的类中操作您的 textArea。然而,这个其他类必须有权访问 UI 的实例,要么自己实例化它,要么将它作为参数传递

public class OtherClass {
  UI ui = new UI();

  public void doSomething() {
    ui.setTextInTextArea("New text");
  }

}

或类似的东西:

public class OtherClass {
  public void doSomething(UI ui) {
    ui.setTextInTextArea("New Text");
  }
}

【讨论】:

    【解决方案2】:

    与其创建字段public(而不是static public),不如在类中添加这样的方法:

    public void setConsoleTextArea(String value) { consoleTextArea.setText(value); }
    

    那你就可以了

    UI.setConsoleTextArea("abc");
    

    不必弄乱自动生成的consoleTextArea 字段。

    【讨论】:

    • 您的解决方案无法编译。您不能以静态方式调用该方法,因为它不是静态方法。如果您确实将其设为静态方法,您最终会遇到同样的问题。需要有一个 UI 实例
    • 我假设UI 是一个类的instance。否则事情对我来说没有多大意义。用static 字段构建用户界面对我来说看起来很奇怪。但是您仍然可以通过使建议的函数static 轻松调整代码。
    • UI 是类,而不是实例。问题是OP不知道静态和实例之间的区别,并且没有Java或OOP的基础。
    猜你喜欢
    • 1970-01-01
    • 2015-05-10
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 2014-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多