Java 在大量jTextField中选择all on focus

Java 在大量jTextField中选择all on focus,java,swing,focus,jtextfield,selectall,Java,Swing,Focus,Jtextfield,Selectall,我的应用程序中有很多jTextFields(大约34个jTextFields),我希望它们在获得焦点时选择所有文本,并且在焦点丢失时不选择任何文本。 有没有办法用一个监听器做到这一点,或者我应该为这34个jTextField中的每一个写一个“FocusGa获”和一个“FocusLost” 谢谢为此任务创建一个类: static class FocusTextField extends JTextField { { addFocusListener(new FocusLis

我的应用程序中有很多jTextFields(大约34个jTextFields),我希望它们在获得焦点时选择所有文本,并且在焦点丢失时不选择任何文本。
有没有办法用一个监听器做到这一点,或者我应该为这34个jTextField中的每一个写一个“FocusGa获”和一个“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);
            }
        });
    }
}

用法示例(代码如下):


在类上创建并扩展JTextField,现在实现这个类中您想要的任何内容。在这里您可以像这样创建JTextField的对象

JTextField txt1 = new JTextField();
frm.add(txt1);
而不是这样做

JTextField txt1 = new CustomText();
frm.add(txt1);
因此,必须为文本字段设置公共类

有没有办法用一个听众做到这一点


您可以使用KeyboardFocusManager。参见。

中的示例,我想说一个简单的方法是在单击时添加一个操作,只需选择全部

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

这并没有涵盖选择文本字段的所有其他方式:通过Swing/AWT调用进行制表、Alt制表。
private void jTextField1MouseClicked(java.awt.event.MouseEvent evt) {                                         
    jTextField1.selectAll();
}