Java:调用静态方法但没有任何反应?

标签 java swing methods static

我有一个名为 GUI 的类,它基本上使用 Swing 创建一个 latout。在该类中,我有一个名为“log”的方法,该方法应该向布局中的文本区域添加新行。

问题是每当我从 GUI 类外部调用该函数时,什么也没有发生。如果我从类中调用该方法,它会按照预期的方式向文本区域添加一行。

我已将方法及其调用的所有变量设置为公共(public)静态,并且没有收到任何错误。当我从外部调用该方法时,它只是不执行任何操作。

有什么想法吗?

编辑:

这是 GUI 类中的方法:

public static void log(String inputString) {
    logConsole.append(inputString + "\r\n");
}

在类 swing 的底部声明了文本区域,我只是将其修改为公共(public)静态而不是私有(private)。

public static javax.swing.JTextArea logConsole;

无法发布更多代码,希望这至少有一点帮助吗? :/

最佳答案

这很可能是 Swing 的并发问题。由于 Swing 是单线程的,因此需要在事件调度线程(即 EDT)中修改 Swing 组件。欲了解更多信息,请参阅Concurrency in Swing .

<小时/>

编辑-

如果这确实是并发问题,那么一种快速解决方法是使用 SwingUtilities 。特别是isEventDispatchThread()invokeLater(...) 。例如,

if(!SwingUtilities.isEventDispatchThread()){
    SwingUtilities.invokeLater(new Runnable(){
        @Override
        public void run(){
            GUI.log("foo"); // modify textarea in EDT
        }
    });
}
else{
    // your problem lies elsewhere
}

关于Java:调用静态方法但没有任何反应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7322346/

相关文章:

java - 它是使用 javaargs 而不是在 Java 中重载的标准方法吗?

java - 将字符串从 JLabel 数组存储到字符串数组

java - 不同数组的总和

PHP/MySQL : How to get multiple values from a PHP database method

c# - 将 lambda 表达式作为参数传递,然后使用参数执行该 lambda

java - 具有组计数 gremlin 查询的子句

java spring命名查询和属性文件

java - Documentum:Oracle数据库Date时间差和I_LATEST_FLAG

java - JPanel 对 KeyBindings 没有反应

java - 为什么 paintComponent 从未被调用?