我的程序现在开始
public static void main(String[] args){
new Gui().setVisible(true);
new Program(); }
我正在使用 Jtextarea 来显示结果。 我在 Gui display(String) 中有方法。它将文本附加到 Jtextarea。 我从程序中调用 display(String ) 来显示结果。我在 Program 中有一些方法可以做一些工作并调用该方法以在执行结束时显示 Program 方法。但是,如果我在执行开始时调用 display(String) ,它将不会显示在 Jtextarea 中,直到程序的方法完成。它没有更新 Gui。我想我需要使用 invoklater 和新的 runnable 来启动 Gui 的 EDT,但如何在 main 中与新程序一起执行此操作。 那么这个问题的解决方案是什么? 感谢您的帮助。
附注我用谷歌搜索了但不知道如何做。所以这是最后一个资源
最佳答案
每个人似乎都忽略了一件大事:这是 JTextArea.append
的 swing 文档的实际引用:
This method is thread safe, although most Swing methods are not. Please see How to Use Threads for more information.
所以看来 SwingUtilities.invokelater
应该与此无关。我真的不知道是什么导致了你的问题。如果您发布一些代码,我也许可以提供更多帮助。
P。 S:我本想将此作为评论,但我没有这样做的声誉。
关于java - 在与主线程不同的另一个线程中启动 swing gui,以在计算时更新 jtextarea,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17710330/