java - 如何从静态类更新文本框?

标签 java class static non-static

这让我发疯。我有一个基于文本的工作应用程序。它有很多变量,现在需要 GUI。我从基础开始。每当一些数据发送到我的日志时,我希望它显示在我的文本框中。

这里是数据传递的统一入口点,可以对其进行操作。

public class Log {

    private static void consoleOut(String data) {
    System.out.println(data);
    OBD2nerConsole.update(data);
    }
      public static void level0(String data) {
    if (Status.ConsoleLevel >= 0) {
    consoleOut(data);

    }

这是我的表单,它有一个文本框和一些按钮。

public class OBD2nerConsole extends java.awt.Frame {

    public static void update(String data) {
        textField1.setText(textField1.getText() + data);
    }   

}

我遇到的问题是我正在使用静态和非静态。我猜文本框中没有显示任何内容。我一直在尝试并删除了所有错误,但它不起作用。我真的不知道该怎么办。看来这是最好的配置,因为没有错误,但文本框没有执行任何操作。

我应该补充一点,这是我的第一个表格!

最佳答案

假设textField1是父类的属性,则update方法不应该是static。这当然意味着您需要将该方法应用于 ODB2tunerConsole 对象的实例。

Java 中的规则是,静态 方法不能通过显式使用类实例的引用来访问其类的非静态属性和方法。

这导致刚接触 Java 面向对象编程的人尝试将所有内容都静态化。但正如你所看到的,这会带来麻烦。正确的解决方案是将静力学的使用限制在真正需要的情况下。具体如下:

  • 共享常量;例如public static final String FOO = "foo";
  • 仅依赖于其参数状态的辅助方法。
  • 对全局数据结构的隐藏引用,使用“单例”模式公开(如果需要)。

关于java - 如何从静态类更新文本框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3269960/

相关文章:

java - 如何使用 Active Directory 或 LDAP 登录到 Business Objects

html - 具有多个标识符的 css 类定义

java - 在 Java 方法中更改数组值而不将其传递给方法

java - 以不同步的方式改变对象的两个不同部分不安全吗?

java - 将 JVM 参数注入(inject)到 spring 属性文件中

java - 将对象添加到列表时出现空指针异常

json - 使用 JSON 文件中的值初始化多个类似乎会创建重复项

Javascript 数组和对象/类

Java MVC 数据库 Controller 类

c++ - 静态变量动态分配