0

Java で音訳ツールを作成しています。ほぼ完成です。これがスクリーンショットです。

ここに画像の説明を入力

何らかの理由でフォーカス可能でなければならないJWindowドロップダウンに使用しています。したがって、ユーザーは一度に 1 つの入力にのみ書き込むことができます。このスタティックを作成したので、すべての Text コンポーネントは新しいインスタンスを作成する代わりに同じインスタンスを使用します。window

複数のウィンドウで作業すると問題が発生します。両方のウィンドウが画面に表示されていない限り、正常に動作します。ただし、このドロップダウン ウィンドウの所有者ウィンドウが閉じられると、ドロップダウン ウィンドウはフォーカスできなくなります。

コンストラクターのJavadocがJWindow(Window owner)言うように:

指定されたオーナー ウィンドウでウィンドウを作成します。このウィンドウは、所有者が画面に表示されていない限り、フォーカスできません。所有者が null の場合、共有所有者が使用され、このウィンドウはフォーカス可能になりません。

では、異なるウィンドウ内のすべてのコンポーネントによって共有される、静的フォーカス可能なウィンドウを作成するにはどうすればよいでしょうか。

4

1 に答える 1

2

JWindow を使用しないでください。

代わりに、装飾されていない JDialog を使用できます。そうすれば、焦点の問題はありません。

編集:

次のようなコードを使用して、ダイアログを表示するときに、ダイアログが最初にフォーカスされないようにすることができます。

dialog.setWindowFocusableState(false);
dialog.setVisible(true);
dialog.setWindowFocusableState(true);
于 2015-04-01T03:30:20.457 に答える