複数のテキストフィールドを1つのフォーカスリスナーに追加して実行しようとしていますが、現在はテキストフィールドを追加していますが、複数のテキストフィールドを1つのフォーカスリスナーに追加する
答えて
私は、各テキストフィールドのフォーカスリスナーを作成するよりも良い方法だと思います。
通常THA ANSERは次のとおりである: "...それが依存"
が、あなたのケースでIdは言う:各テキストフィールドには独自のリスナー(インスタンス)を持つべきです。 理由は、テキストフィールドの内容を変更するためです。 これを行うのは、1つのリスナーインスタンスだけで、イベントが発生したときにいつもすべてのテキストフィールドを変更するか、または影響を受けるテキストフィールドがないか、別のテキストフィールドを追加する場合はif
/else
カスケードに新しいエントリが必要です。
私はあなたがそれをパラメータとしてTextFieldを与えるリスナーの名前の内部クラスを作成することを示唆している:
class MyTextFiledFocusListener implements FocusListener {
private final JTextFiled textField;
MyTextFiledFocusListener(JTextFiled textField){
this.textField = textField;
textField.addFocusListener(this);
}
public void focusGained(FocusEvent e)
{
textField.setText("");
}
public void focusLost(FocusEvent e)
{
// nothing
}
}
とビットあなたがへの変更投稿:
new MyTextFiledFocusListener(JT_id);
だけのためにレコード:
かなり多くのメソッドを持つスイング関連のインターフェイスは、デフォルトのIMを持っています空のメソッドを持つplement(の既定のメソッドのpre java8ソリューション)はFocusListener
です。これらのデフォルト実装は通常*Adapter
と呼ばれます。したがって、あなたがFocusAdapterを拡張するとき、あなたのコードを短くすることができFocusListener
を実装するのでinsted:
class MyTextFiledFocusListener extends FocusAdapter {
private final JTextFiled textField;
MyTextFiledFocusListener(JTextFiled textField){
this.textField = textField;
textField.addFocusListener(this);
}
public void focusGained(FocusEvent e)
{
textField.setText("");
}
}
先生、ありがとうございます。 –
このようなものはどうですか?クリックしながら
FocusListener clearFields = new FocusListener() {
public void focusGained(FocusEvent e)
{
JT_id.setText("");
JT_name.setText("");
JT_add.setText("");
JT_cno.setText("");
JT_email.setText("");
}
public void focusLost(FocusEvent e)
{
// nothing
}
});
JT_id.addFocusListener(clearFields);
JT_name.addFocusListener(clearFields);
JT_add.addFocusListener(clearFields);
JT_cno.addFocusListener(clearFields);
JT_email.addFocusListener(clearFields)
あなたはまだ他の人に焦点を当てて/それらのすべてをクリアします/クリックする最初のもの(JT_id
)に焦点を当てたような状況を回避するために、テキストフィールドのすべてにフォーカスリスナーを追加する必要があります何もしません。
代替案 - 各テキストフィールドにそのフィールドのみをクリアするフォーカスリスナーを割り当てます。
先生、すべてのテキストフィールドにフォーカスリスナーを追加せずに特定のフィールドをクリアする方法はありませんか? –
unfortunatelly no。あなたがクリックしたフィールド(フォーカスを得たフィールド)をクリアしたいと思っていましたが、そうでない場合は、コメントを残して質問を更新してください。さもなければ、 "unfortuantelly no"コメントが適用されます。 – Shark
- 1. 複数のCSSクラスを1つの関数に追加する
- 2. スイフト:1つのUITimePicker、複数のテキストフィールド
- 3. 複数のディレクティブを1つのコンポーネントに追加する方法
- 4. 複数のデータベースを1つのアンドロイドアプリに追加する
- 5. 複数のサーブレットを1つのweb.xmlに追加する
- 6. 1つのAVAudioPlayerに複数の曲を追加する
- 7. 複数のプロジェクトを1つのリポジトリに追加する
- 8. 複数のコントローラーを1つのページに追加する
- 9. 複数のdrawImage()を1つのキャンバスに追加する
- 10. 複数のタイマーを1つのhtmlページに追加する
- 11. 複数のフォームデータを1つのデータベース列に追加する
- 12. 複数のアクティビティを1つのonCreateOptionsMenuに追加する
- 13. 複数のサーブレットを1つのweb.xmlに追加する
- 14. 1つのプロジェクトに複数のXcode(ios)プロジェクトを追加する
- 15. 複数のセルを1つの行に追加する
- 16. 1つのエッジを複数のエッジに追加する - Tinkerpop(3.0.1)
- 17. パンダ:1つのExcelファイルに複数のデータフレームを追加する
- 18. 複数の配列値を1つの値に追加する
- 19. 複数のイベントリスナーを1つの要素に追加する
- 20. 複数のコントロールを1つのコントロールに追加するC#winforms
- 21. 1つの背景に複数のgifを追加する
- 22. 複数のテーブルの複数のカラムを1つのカラムに追加する
- 23. arraylist JavaFXに複数のテキストフィールドを追加する方法
- 24. 1つのアイテムを同じリストに複数回追加する
- 25. 複数のファイルを1つに追加する(awk)
- 26. 複数のxslファイルを1つに追加する方法
- 27. 複数のイメージを1つのボタンでのみ追加する
- 28. 複数のリストビューを1つのアクティビティで追加する
- 29. 複数の画像を1つの.Netグラフコントロールで追加する
- 30. 複数のタブを1つのナビゲーションタブで追加する
は、スタックオーバーフローへようこそ! [ツアー](http://stackoverflow.com/tour)を見て回り、[ヘルプセンター](http://stackoverflow.com/help)、特に[どのように私に質問しますか良い質問?](http://stackoverflow.com/help/how-to-ask)と[ここで私はどのような話題を聞くことができますか?](http://stackoverflow.com/help/on-topic)。 –