繁体   English   中英

Java:调用静态方法,但是什么也没发生?

[英]Java: Calling static method but nothing happens?

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

问题是,每当我从GUI类外部调用函数时,都不会发生任何事情。 如果我从类中调用该方法,则会按预期的那样在textarea中添加一行。

我已经设置了方法及其调用到公共静态的所有变量,并且我没有得到任何错误。 当我从外部调用该方法时,它什么也没做。

有任何想法吗?

编辑:

这是GUI类中的方法:

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

在类的底部,swing声明了textarea,而我只是将其修改为public static而不是private。

public static javax.swing.JTextArea logConsole;

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

Swing最有可能是并发问题。 由于Swing是单线程的,因此需要在事件调度线程(即EDT)中修改Swing组件。 有关更多信息,请参见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
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM