在大量的jTextField中选择所有焦点

RYN*_*RYN 4 java swing focus selectall jtextfield

我的应用程序中有很多jTextFields(大约34个jTextFields),我希望所有这些文本在获得焦点时选择所有文本,并且在焦点丢失时不选择任何文本.
有没有办法用一个监听器做这个或者我应该为这34个jTextField中的每一个写一个"FocusGained"和一个"FocusLost"?

谢谢

dac*_*cwe 10

为此任务创建一个类:

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);
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

用法示例(下面的代码):

截图

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);
}
Run Code Online (Sandbox Code Playgroud)