1

アプリケーションにバグがあり、見つけることができません。

選択可能でサイズ変更可能なJPanelがいくつかあり、選択すると境界線が表示されます。それらのいくつかについては、明らかに理由もなく、それらを動かした後に境界線が消えます。今からアプリにバグは見つかりませんでしたが(選択したコンポーネントがフォーカスを要求または取得している他のコンポーネントはありません)、選択したコンポーネントがフォーカスを失うと、JToolbarがフォーカスを取得することに気付きました。

だから私の質問は、どのような状況(おそらくMouseEventsを含む)で、JToolbarコンポーネントはフォーカスを持つことを要求しますか?

または、フォーカスを要求するためにJToolbarを無効にしたり、現在のフォーカス所有者がどのコンポーネントであるかを知る方法はありますか?

4

2 に答える 2

1

ピントの取得を防ぐのは難しいと思います。フォーカスがパネルの外にある必要があるときに、ツールバーの編集可能な JCombobox などのケースがあります。public Component getOppositeComponent()パネルの子の 1 つを返して境界線を残す必要がある場合は、FocusEvent を使用します。

于 2011-03-14T10:54:52.120 に答える
0

私はついに私の問題を解決しました。フォーカスされたコンポーネントを非表示に設定すると、フォーカスが自動的に解放されることに気付きました。JToolbar はこのプロセスに直接関与していませんでしたが、コンポーネント階層のすぐ上にあるコンポーネントであったため、焦点を失いました。したがって、コンポーネントを非表示にしてから再び表示する必要がある場合は、明示的にフォーカスを再度取得する必要があります。

于 2011-03-20T21:48:10.550 に答える