1
私はGUIのJavaアプリケーションを持っています。アプリはシステムトレイに最小化されます。トレイアイコンをクリックしたときにframe.requestFocusInWindow()
を入れて、復元されたJFrame
がユーザーの注目を集めるようにしました。jreをビルドするときに.requestFocusInWindow()が機能しない
コードは次のとおりです。
trayicon.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
try {
if (e.getButton()==MouseEvent.BUTTON1) frame.setVisible(true);
frame.requestFocusInWindow();
} catch (Exception ex) {
Logger.getLogger(TrayControl.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
これは、私は、NetBeans IDEでアプリケーションを実行する場合は完璧に動作しますが、私は.jarファイルを構築し、それを実行すると、アプリケーションウィンドウには、ユーザーの注目を得ていないため、.requestFocusInWindow()
を動作するように思われません私が開いていた他のウィンドウの後ろに復元されます。ここで何が起こっているのですか?
あなたはSwingUtilities.invokeLaterを(...)でrequestFocusInWindowメソッドをラップしてみてください。あるいは、フレームに追加されたコンポーネントで 'grabFocus()'メソッドを試してみてください。 – camickr
ありがとう!しかし、うまくいきません、 'JFrame'は他のウィンドウの前に表示されません。私は問題が焦点ではないと思う、ウィンドウの状態です。最小化されたボタンがクリックされると 'JFrame'がスクリーンからシステムトレイのアイコンに隠れます。おそらく、トレイのアイコンをクリックすると、' JFrame'は 'frame.setVisible(true)'と表示されますが、 ...できますか? – FiroKun