这让我发疯。我有一个基于文本的工作应用程序。它有很多变量,现在需要 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/