我的应用程序中有很多 jTextFields(大约 34 个 jTextFields),我希望它们在获得焦点时选择所有文本,并且在失去焦点时不选择任何文本。
有什么方法可以让一个听众做到这一点,还是我应该为这 34 个 jTextFields 中的每一个写一个“FocusGained”和一个“FocusLost”?
谢谢
最佳答案
为此任务创建一个类:
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);
}
关于java - 在很多 jTextField 中选择所有焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7361291/