我有一个在构造函数中构建GUI的程序。我需要一个与EDT分开的线程,在构造有问题的对象后立即运行。有人能指出我正确的方向吗?
答案 0 :(得分:2)
我需要一个与EDT分开的线程
线程与EDT是分开的,所以你要做的就是创建一个Runnable,然后启动它。
您只需担心线程是否更新任何GUI组件。如果是这种情况,那么您可能想要使用SwingWorker。有关详细信息,请阅读Concurrency上的Swing教程中的部分。
答案 1 :(得分:1)
构建您的GUI,在调用的新的Runnable中打开一个新窗口:SwingUtilities.invokeLater
答案 2 :(得分:1)
您要使用的是SwingWorker< T,V>。在doInBackground
方法中,打开连接并开始获取数据。如果有足够的数据来更新gui,请调用publish
方法。实现process
方法以使用publish
中的新数据更新gui,最后实现done
方法以在完成数据提取时通知用户。
Swing Worker是一个泛型,因此在构建它时,您需要提供两种类型:T
和V
。 V
是在publish
和process
方法之间传递的数据的类型,T
是由doInBackground
返回并传递给done
的类型。
答案 3 :(得分:1)