2011-07-08 13 views
2

モードレスのダイアログボックスが表示され、新しいウィンドウを開くように求められます。このボックスは、私が書いているフレームのファイルメニューから直接、または私のパネルが接続されているフレームワークを介して間接的に2通りの方法で開くことができます。JDialogボックスにフォーカスが得られていません

ファイルメニューから直接電話をかけると、ダイアログボックスにフォーカスが正確に表示されます。しかし、フレームワークに間接的にダイアログボックスを開いてもらうと、フォーカスが合わなくなります。

ダイアログを開く2つの方法の違いはないようですが、どちらの場合でもロード関数が呼び出され、5つのメソッド呼び出しが後でダイアログボックスが開くまではありません。どちらの場合も、ダイアログボックスを生成するフレームは、ボックスが生成された時点で実現されます。私は、ダイアログボックスを表示させた後にrequestFocusを呼び出そうとしましたが、何もしないようです。

ダイアログボックスにフォーカスがない理由、またはフォーカスに通常フォーカスが置かれているウィンドウとは別のウィンドウとしてフォーカスを与える方法を教えてください。

+0

使用でより良い表情になり、 'のrequestFocus()' –

+0

彼はすでにそれを試してみました、それが表示されます。私はあなたが試みることができる 'grabFocus()'関数もあると思いますか? – aardvarkk

+1

いくつかのコードを提供できますか? – mre

答えて

2

ダイアログを作成するときに、メインGUIをダイアログの親として設定してみてください。

最初のケースでは、メニューからクリックすると、自動的にメインGUIがダイアログの親として設定されますが、後者の場合は表示されません。

ダイアログを作成するときは、必ずメインGUI /ウィンドウを親として設定してください。

ほとんどの時間に役立ちます。いくつかのケースでは

+0

これは問題でした。私がダイアログを間接的に開いたときにトップレベルウィンドウを設定しようとしていた呼び出しはnullを返していました。私は本当にそれを知っていたはずですが、私のGUIスキルは他のJavaスキルほど良くはありません:) – drew

関連する問題