私は定期的にJFrameをポップアップするJavaアプリケーション(Swing GUI)を作成しています。JFrameを前面に置くことはできますが、フォーカスしないことは可能ですか?
ウィンドウを前面(foo.setAlwaysOnTop(true)でも良いでしょう)に持っていくことは可能ですか?はフォーカスなしですか?
入力中にキーボードを見るために時々画面から目を離す人もいますし、このウィンドウが常にキーボードのフォーカスをとらえたら、人々は本当に迷惑になるでしょう気づかないうちにポップアップするたびに、かなりの数のキーストロークが失われます。
キーボードを常時見ずに実際に入力することができても、ウィンドウをポップアップしてフォーカスを取得すると、ポップアップウィンドウ自体から不要な操作が発生する可能性があります(Tab
+ Enter
たとえば、ユーザが誤って選択しなかったオプションを誤って選択した場合)。
ありがとうございます!
更新
ジョナスが示すように、foo.setFocusableWindowState(false);
ウィンドウが(唯一のGnomeの上でテスト)レンダリングされた後に呼び出された場合に動作するようです。
これは動作しません:
foo.setFocusableWindowState(false);
foo.setVisible(true);
foo.setFocusableWindowState(true);
しかし、このはを行います。
foo.setFocusableWindowState(false);
foo.setVisible(true);
Thread.sleep(1000);
foo.setFocusableWindowState(true);
私は私がキャッチすることができ、イベントがありますかどうかを確認する必要があります/それに耳を傾け、私がすることができます適切な場合はfoo.setFocusableWindowStatue(true);
を実行してください。
私は私の問題を解決すると考えます。
フレームがレンダリングされたときに聴くイベントを見つけましたか? – lordoku
ここで働いているイベントを聞いたことがありますか? – wrslatz