11

メインゲームを保持する 1 つの JFrame と、スコアを表示する別の JFrame を使用して、小さなゲームを作成しています。問題は、それらの構築が完了すると、スコア JFrame が常にフォーカスされてしまうことです! 私は、scoreDisplay.toFront()、scoreDisplay.requestFocus()、さらには以下を呼び出してみました:

display.setState(JFrame.ICONIZED);
display.setState(JFrame.NORMAL);

これを機能させる方法はありますか?前もって感謝します、ジョン・ムラノ

4

6 に答える 6

13

メソッドを呼び出しrequestFocus()ます。

オペレーティング システムがフレームのフォーカスを許可しない理由は多数あるため、これが機能する保証はありません。別のアプリケーションで優先度の高い別のフレームが存在する可能性があります。フレームがフォーカスを要求できない Linux デスクトップもいくつかあります (私の記憶が正しければ)。

成功の可能性を高めるために、toFront()フォーカスを要求する前にメソッドを呼び出すこともお勧めします。

frame.setVisible(true);
frame.toFront();
frame.requestFocus();

フレーム処理、特にフォーカスとレイヤリングはオペレーティング システムに大きく依存するため、これは保証されないことに注意してください。そのため、フレームを表示に設定し、前面に移動して、フォーカスを要求します。EDT を放棄すると、オペレーティング システムはフレームにフォーカスを与える可能性があります。少なくとも、ウィンドウは上にある必要があります。

于 2015-05-29T12:29:54.207 に答える
1

JOptionPaneMessageDialog コードの上に次のコード行を追加するだけです... this.setAlwaysOnTop(false);

于 2016-11-08T20:12:37.150 に答える
-1
frame.setExtendedState( JFrame.MAXIMIZED_BOTH);
frame.setVisible(true);

上記をお試しください。

于 2012-07-11T02:37:32.357 に答える