0

doInBackground() swingworker メソッド内から、別のオブジェクトから大規模で複雑なメソッドを呼び出すために使用したい 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 オブジェクトは、ネストされたクラスとして HostGameTask を持つ SwingGUI 内のオブジェクトです。

StartGame() 関数内からパブリッシュできますか?

4

1 に答える 1

2

はいといいえ。

いいえ、コードを書いた方法を与えることはできませんか?

SwingWorkerはい、メソッドへの参照を渡せばできますStartGame

StartGame個人的には、メソッドがワーカーと通信できるインターフェイスを作成します。これにより、コードが分離され、への依存がなくなりSwingWorkerます (StartGameメソッドは、そのコンテンツを誰が消費するかを気にするべきではなく、関係者にその情報を送信する方法だけを気にする必要があるため)。

于 2012-09-02T09:02:59.100 に答える