2011-09-09 20 views
4

私のアプリケーション(約34 jTextFields)にjTextFieldsがたくさんあり、フォーカスを取得してフォーカスのテキストを選択しなかった場合、すべてのテキストをすべて選択します。
1つのリスナーでこれを行う方法はありますか?またはこれらの34個のjTextFieldのそれぞれについて「FocusGained」と「FocusLost」を記述する必要がありますか?すべてのjTextFieldのフォーカスをすべて選択します

おかげ

答えて

2

をクラスに作成して延びていますJTextFieldは、このクラスで必要なものを実装します。あなたの代わりにこの

JTextField txt1 = new JTextField(); 
frm.add(txt1); 

のようなのJTextFieldのオブジェクトを作成することができる場所とテキストフィールド

9

このタスクのクラスを作成する:

static class FocusTextField extends JTextField { 
    { 
     addFocusListener(new FocusListener() { 

      @Override 
      public void focusGained(FocusEvent e) { 
       FocusTextField.this.select(0, getText().length()); 
      } 

      @Override 
      public void focusLost(FocusEvent e) { 
       FocusTextField.this.select(0, 0); 
      } 
     }); 
    } 
} 

使用例(以下のコード):

screenshot

public static void main(String[] args) throws Exception { 

    JFrame frame = new JFrame("Test"); 
    frame.setLayout(new GridLayout(5, 1)); 

    frame.add(new FocusTextField()); 
    frame.add(new FocusTextField()); 
    frame.add(new FocusTextField()); 
    frame.add(new FocusTextField()); 
    frame.add(new FocusTextField()); 

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.pack(); 
    frame.setVisible(true); 
} 
2

のための一般的なクラスを設定する必要が

JTextField txt1 = new CustomText(); 
frm.add(txt1); 

ので、この方法がすべてのDOは1つのリスナーでこれを行う方法

KeyboardFocusManagerを使用できます。 Global Event Listenersの例を参照してください。

0

私はそれを行うための簡単な方法は、単純にすべての

private void jTextField1MouseClicked(java.awt.event.MouseEvent evt) {           
    jTextField1.selectAll(); 
}      
を選択してクリック上のアクションを追加していると言うでしょう
関連する問題