0

我有一个 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 循环。Poker 对象是 SwingGUI 中的一个对象,它具有作为嵌套类的 HostGameTask。

我可以从 StartGame() 函数中发布吗?

4

1 回答 1

2

是和不是。

不,你不能给出你编写代码的方式吗?

是的,如果您将引用传递SwingWorker给该StartGame方法,则可以。

就个人而言,我会编写一个接口,您的StartGame方法可以通过该接口与工作人员进行通信。这将您的代码解耦并消除对 的依赖SwingWorker(因为您的StartGame方法不应该关心谁在使用它的内容,而应该关心它如何将该信息发送给相关方)。

于 2012-09-02T09:02:59.100 回答