java - 在很多 jTextField 中选择所有焦点

标签 java swing focus jtextfield selectall

我的应用程序中有很多 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);
            }
        });
    }
}

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

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);
}

关于java - 在很多 jTextField 中选择所有焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7361291/

相关文章:

java - 在不改变分辨率的情况下缩小大 JPEG 的大小

java - 将自定义属性添加到 JTree 节点

android - 单击同级时将焦点重定向到 EditText

c# - 我可以删除 TabControl 上选项卡上的虚线焦点矩形吗?

java - 保存列表的大小而不更新它

java - 在 Eclipse 中将 Android 项目转换为 'regular' Java 项目?

java - Eclipse IDE 中的“设计”选项卡为空白

java - 使用静态类或此引用将数据从一个Jframe传输到另一个Jframe?

java - 如何使用键盘激活 JTextField

java - java中的参数多态性