0

現在、多くの JComponents、主に JTextFields、JTextAreas、JComboboxes、JCheckBoxes、および JButtons を含むフォームがあり、特定のキーが離された後のフォーカスの変更など、それらの動作を制御したい場合は、次のようにします。

すべてのコンポーネントを JComponent[] に配置し、適切なリスナーを追加して循環します。上記のリスナーによってイベントが登録されると、「instanceof」でどの種類の JComponent がイベントを起動したかを確認し、適切な反応を割り当てます。

たとえば、このメソッドを使用して、VK_ENTER を使用してフォームを循環させたり、DocumentListener が起動した後に "firePropertyChange(..)" を実行したり、UndoRedoListeners を追加したりします。

私の質問: これを行うためのより良い方法はありますか? はいの場合、利点を説明していただけますか?

4

2 に答える 2

1

フォーカス転送システムをカスタマイズする必要があります。

フォーカスサブシステムの使用方法、特にフォーカストラバーサルのカスタマイズをご覧ください。

于 2012-11-12T09:25:14.003 に答える
1

しかし、私の質問は、すべての JComponents を配列に入れ、すべてのリスナーとすべての起動されたイベントに対してそれらを循環させるという一般的な方法に言及しています。それは十分に機能しますが、少し「不経済」に感じるので、推奨される方法なのか、それともより良い方法があるのか​​ 知りたいと思いました.

私は通常、型/インスタンス固有の動作がある場合、instanceof やその他のチェックを回避できるように、型/インスタンスごとに (多くの場合、匿名クラスとして) カスタム リスナーを作成します。

于 2012-11-12T09:01:10.123 に答える