2011-11-07 4 views
1

私は、400ミリ秒間画像を表示するためにJava Swing Timerを使用する簡単なプログラムを持っています。この時間には、すべてのActionListenersを停止するか、ActionEventの取得を停止したいだけです。私は40以上のボタンがあり、これを行う簡単な方法が欲しい。一定期間JavaのすべてのActionEvents/Stop Listeningの受信を停止しますか?

Javaでこれを行うにはどうしますか?

答えて

2

この「画像表示済み」状態にあると判断できますか?イメージが上になり、状態を「イメージ表示」などに設定します。あなたのウィジェットを通って、画像がアップしている間にどれが死んでいるのかを決めます。それらをこの状態値のオブザーバにします。状態が変わると、必要に応じて有効または無効になります。画像コードはどのウィジェットにも直接何もしません。状態が「画像表示」になったと宣言します。その情報をどうすれば何をすべきかを決定するのはオブザーバーの責任です。

またはGlassPaneを使用してください。それも動作します。もちろん、GlassPaneはすべてをシャットダウンします。より選択的にする必要がある場合は、より微調整されたアプローチが必要です。

1

一時的なGlassPaneインスタンスを使用すると、空のリスナーを登録してすべてのイベントを消費することができます。

1

装飾されていないモーダルJDialogを使用してイメージを表示します。ダイアログを表示する前に、タイマーを開始します。タイマーが400ミリ秒で起動すると、ダイアログが閉じます。

1

私はよく似た問題を抱えていて、そのような状況で私をつかまえた設計上の問題点を発見しました。その場合、私はまだそれを回避しなければならなかった。問題を解決するために、無効にしたい(リッスンを止めたい)要素のリストを保存し、タイマーの始めと終わりにそれらの要素を繰り返しました。ボタンの場合は、次のように簡単にする必要があります。

ボタンの場合、ボタンがグレー表示になります。他のスイングコンポーネントにも同様のことが起こります。

+0

このソリューションはお勧めできません。 – mre

+0

おそらくOPと自分にとってなぜ有益なのかについての説明があります。しかし、私はSteve Jの提案も似ていますが、これは同様の反復的なアプローチです。 –

関連する問題