我有一个 swingworker,我想用它从 doInBackground() swingworker 方法中调用另一个对象的大型且复杂的方法。
看起来像这样:
public class HostGameTask extends SwingWorker<Void, String> {
@Override
protected Void doInBackground() throws Exception {
try {
SwingGUI.poker.StartGame(true,(SwingGUI.numberOfSlots.getSelectedIndex()+1));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void process(List<String> messages) {
String latestMessage = messages.get(messages.size()-1);
}
}
StartGame 方法内部有一个 while 循环,等待玩家加入。扑克对象是 SwingGUI 中的一个对象,它具有 HostGameTask 作为嵌套类。
我可以在 StartGame() 函数中发布吗?
最佳答案
是和否。
不,你不能给出你编写代码的方式吗?
是的,如果您将 SwingWorker
的引用传递给 StartGame
方法,就可以。
就个人而言,我会编写一个接口(interface),通过该接口(interface),您的 StartGame
方法可以与工作线程进行通信。这会解耦您的代码并消除对 SwingWorker
的依赖(因为您的 StartGame
方法不应该关心谁消费其内容,而只关心它如何将该信息发送给感兴趣的各方)。
关于java - SwingWorker,从大型方法调用中发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12233682/