私が使用したほとんどの GUI では、テキストを含むコントロールがフォーカスされると、コントロールの内容全体が選択されます。つまり、入力を開始しただけで、以前の内容が完全に置き換えられます。
例: 値ゼロで初期化されたスピン コントロールがあります。タブで移動して「1」と入力すると、コントロールの値が 1 になります。
Swing では、これは起こりません。コントロール内のテキストは選択されておらず、既存のテキストの端または端にカラットが表示されます。上記の例の続き:
Swing JSpinner では、タブでスピン コントロールに移動すると、カラットは左側にあります。「1」と入力すると、コントロールの値が 10 になります。
これは私 (および私のユーザー) を壁に突き動かします。私はそれを変えたいと思っています。さらに重要なのは、新しい動作が JTextField、JPasswordField、JFormattedTextField、JTextArea、JComboBox、JSpinner などに適用されるように、グローバルに変更したいということです。これを行う唯一の方法は、各コントロールに FocusAdapter を追加し、focusGained() メソッドをオーバーライドして Do The Right Thing[tm] にすることです。
もっと簡単で壊れにくい方法があるはずです。お願いします?
編集: この特定のケースに関する 1 つの追加情報。私が使用しているフォームは、Idea のフォーム デザイナーを使用して生成されました。つまり、通常、コンポーネントを作成するためのコードを実際に書くことはありません。自分で作成したいということを Idea に伝えることは可能ですが、それは避けたい面倒です。
モットー: 優れたプログラマーは皆、基本的に怠け者です。