2011-09-09 119 views
4

我有很多jTextFields在我的應用程序(約34 jTextFields),我希望他們都選擇所有文本時獲得焦點和選擇沒有文本焦點丟失。
有沒有辦法與一個監聽器做到這一點,或者我應該爲這34個jTextField中的每一個寫一個「FocusGained」和「FocusLost」?選擇所有焦點在很多jTextField

由於

回答

2

上創建類和延伸JTextField現在可以在這個類中實現你想要的任何東西。在那裏你可以這樣

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

,而不是創建JTextField的對象做這樣

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

所以你要設置的通用類文本字段

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

是否有任何用一個聽衆來做這件事的方法

您可以使用KeyboardFocusManager。請參閱Global Event Listeners中的示例。

0

我會說簡單的方法來做到這一點是添加的點擊動作,簡單地選擇所有

private void jTextField1MouseClicked(java.awt.event.MouseEvent evt) {           
    jTextField1.selectAll(); 
}