2016-07-28 7 views
1

私はCLIで動作するプログラムを持っていますが、JOptionPaneを使用してポップアップメニューを表示してイベントをユーザーに警告します。私は、showMessageDialogメソッドが呼び出されたときに結果のポップアップメニューが自動的にフォーカスしないことに気付きました。JOptionPane showMessageDialogコンソールプログラムのフォーカスを要求します。

ポップアップダイアログボックスのフォーカスを要求する方法はありますか?私はJOptionPane上でrequestFocusを呼び出そうとしましたが、無駄です。

ここにいくつかのサンプルコードがあります。

System.out.println("Backing up..."); 
//backUp(); 
Component frame = null; 
JOptionPane jop = new JOptionPane(); 
jop.showMessageDialog(frame, "Backup complete. Ready for encryption."); 

私はこれが再投稿の場合はお詫び申し上げますが、これまでの回答を見つけることができませんでした。

+0

私はちょうどあなたのコードを試してみましたし、それが自動的に得ましたフォーカス!テストするには、「Enter」を押して、ポップアップが消えないかどうかを確認してください。 – mohsenmadi

+0

@mohsenmadi私は別のウィンドウにいる場合、それは問題ではありません。通常は 'requestFocus()'を呼び出すことでこの問題を回避することができますが、 'showMessageDialog'は静的で、' jop.requestFocus() 'の呼び出しは効果がありません。糸。 – Sollybird

+0

まだ再生できませんでした!私は 'try {Thread.sleep(2000); JOptionPane.showMessageDialog(null、 "Back ...");} catch(InterruptedException e){} '他のウィンドウにフォーカスする時間を与えます。結果?まだポップアップが表示されたときにフォーカスを得ました!私はMacで走っています - 多分異なるシステムは違った動作をしますか? – mohsenmadi

答えて

0

JDialogを作成し、setAlwaysOnToptrueに電話してください。

JOptionPane jop = new JOptionPane(); 
JDialog dlog = jop.createDialog(null, "Backup complete. Ready for encryption."); 
dlog.setAlwaysOnTop(true);//make JDialog on top of other windows 
dlog.setVisible(true); 

Windowsで上記の作品が、この動作はプラットフォームに依存し得ることに注意してください(ドキュメントを参照してください - これはisAlwaysOnTopSupportedメソッドを介してサポートされている場合は、確認することができます)

関連する問題