- - PR -
JFrame間の画面遷移とアクティブWindowについて
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2004-04-20 02:25
現在、JFrameを継承する2種類の画面を作成しています。
先に表示した画面が閉じたら、 次の画面を表示する処理を行っているのですが、 後に表示した画面がアクティブにならない (java.awt.Window.isActive()がfalseの状態)という現象が発生しています。 具体的な処理はこのようになります。 まず画面制御を行うクラスAから、先に表示する画面1を生成し表示します。 この時、画面1でWindowClosedイベントが発生した場合、 クラスAに対して通知するよう、リスナー登録をしておきます。 クラスAでは画面1からWindowClosedイベントが発生したことを通知されると、 次に表示する画面2を生成し、表示しています。 ここで、画面2にisActive()を実行すると、falseが返っています。 画面2を生成し表示(setVisible(true))した時点で、 アクティブになるものと思っていたのですが、 何か思い違いがあるのでしょうか?ご教授をお願いいたします。 |
|
投稿日時: 2004-04-20 07:10
のちさん、こんにちは。
画面2に対する setVisible(true)から、実際に画面2の ウインドウが表示 されるまで時間があります。(人間の目では一瞬ですが。) 画面2にも WindowListener登録して、通知をうけて同期させてはいかがで しょうか? 可視を待つには、windowOpened()、 アクティブを待つには windowActivated()の通知を受けます。 |
|
投稿日時: 2004-04-20 23:04
Kissingerさん、ご回答ありがとうございます。
なるほど、言われてみればその通りでした(^^; ご指摘いただいた内容をもとに、画面2でwindowActivated()が発生した際、 クラスAに対して通知するよう追加しました。 クラスAはその通知を受けて、画面2に対して処理を行うよう変更したところ、 期待通りの挙動となりました。 (クラスAが画面2に対して処理を行うタイミングに 画面2がisActive()==trueとなっていました。) ありがとうございました。 |
1
