我有很多jTextFields在我的應用程序(約34 jTextFields),我希望他們都選擇所有文本時獲得焦點和選擇沒有文本焦點丟失。
有沒有辦法與一個監聽器做到這一點,或者我應該爲這34個jTextField中的每一個寫一個「FocusGained」和「FocusLost」?選擇所有焦點在很多jTextField
由於
我有很多jTextFields在我的應用程序(約34 jTextFields),我希望他們都選擇所有文本時獲得焦點和選擇沒有文本焦點丟失。
有沒有辦法與一個監聽器做到這一點,或者我應該爲這34個jTextField中的每一個寫一個「FocusGained」和「FocusLost」?選擇所有焦點在很多jTextField
由於
上創建類和延伸JTextField現在可以在這個類中實現你想要的任何東西。在那裏你可以這樣
JTextField txt1 = new JTextField();
frm.add(txt1);
,而不是創建JTextField的對象做這樣
JTextField txt1 = new CustomText();
frm.add(txt1);
所以你要設置的通用類文本字段
創建此任務的類:
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);
}
});
}
}
實施例的使用(下面的代碼):
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);
}
是否有任何用一個聽衆來做這件事的方法
您可以使用KeyboardFocusManager。請參閱Global Event Listeners中的示例。
我會說簡單的方法來做到這一點是添加的點擊動作,簡單地選擇所有
private void jTextField1MouseClicked(java.awt.event.MouseEvent evt) {
jTextField1.selectAll();
}