gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 07:14:07 24 4
gpt4 key购买 nike

我有一个名为 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com