0

私はGUIに取り組んでおり、下で状況が変化したときに表示を更新するルーチンがあります。

void update() {
    if (needsUpdating) {
        // ...
        needsUpdating = false;
    }
}

update()を「頻繁に」呼び出さないようにしています。つまり、多数のプロパティが連続して設定されている場合は、update()を1回だけ呼び出すようにします。

すべてのユーザー入力イベント(key / mouse / etc)の後にupdate()を呼び出すことは可能ですか?これは手動で行うこともできますが、イベントハンドラーが非常に多く、忘れてしまうことはわかっています。Javaでこれを行うことはできますか?

4

2 に答える 2

1

はい、ユーザーイベントをグローバルに聞くことができますが、別の方法が見つからない場合を除いて、お勧めしません。

http://tips4java.wordpress.com/2009/08/30/global-event-listeners/

本当の問題は、アプリケーションの設計にあるようです。

これは手動で行うこともできますが、イベントハンドラーが非常に多いため、忘れてしまいます。

それらの「多く」を別々の部分にモデル化し、どの部分がいつ更新をトリガーする必要があるかを明確に定義してみてください。実際、実際のリスニングの実装が何であれ、最も些細なアプリケーションを超えてしまうと、そのようなモデルを回避する方法はありません。手始めに、fiを参照してください

https://softwareengineering.stackexchange.com/questions/71022/what-is-good-programming-practice-for-structuring-java-project

于 2011-05-09T10:39:55.477 に答える
0

EventQueueをサブクラス化することにより、独自のイベントキューを使用できます。これにより、すべてのイベントを制御し、必要に応じて更新を行います。AWTEventQueueを独自の実装に置き換える方法を参照してください。

しかし、私はあなたのユースケースを理解していません:swingはすべてのイベントのGUIを更新します、なぜあなたはあなた自身をやりたいのですか?

于 2011-05-09T06:38:35.533 に答える