0

3Dグラフのコードを書いていますが、ユーザーがJButtonを押したときにシーングラフを更新したいと思っています。Behaviorクラスを使用しようとしていますが、swingイベントを使用して動作をウェイクアップするための情報が見つかりません。私は本当に助けていただければ幸いです!ありがとうございました!!

4

1 に答える 1

0

Runnables のキューを含む特別な動作オブジェクトを使用できます。その後、ランナブルをビヘイビアーにポストして、ウェイクアップできます。キューにコマンドがなくなったときにのみ動作がスリープ状態になるように、適切な同期を整理する必要がありますが、動作するはずです。

クラスをシングルトンにして、SwingUtilities.invokeLater() メソッドと同様に、Runnable を BehaviorScheduler 内で実行できるようにします。

public class ThreadTransferBehavior extends Behavior {
    private final static int POST_ID = 9997;
    private final WakeupOnBehaviorPost m_wakeupPost = new WakeupOnBehaviorPost(this, POST_ID);

    private final Stack<Runnable> commands;


    public synchronized void processStimulus(Enumeration i) {
       while(!commands.isEmpty()) commands.pop().run();
       wakeupOn(m_wakeupPost);
    }

    public synchronized void queueCommand(Runnable r) {
      commands.push(r);
      postId(POST_ID);
    }
}
于 2012-01-12T17:35:56.100 に答える