Java 焦点获得和焦点丢失事件

Java 焦点获得和焦点丢失事件,java,swing,focus,jtextfield,Java,Swing,Focus,Jtextfield,我的JavaSwing表单中有4个JTextfields。问题是我需要通过java代码将焦点从一个JTextField移到另一个,而不是使用tab键 如果JTextField2获得的焦点意味着需要选择JTextField2中的内容。我不知道该怎么做,请将您的正确代码与此问题关联起来。您可以调用您想要焦点的文本字段。这可能有点复杂 您必须将or包装并延迟到invokeLater(),然后放入其中(最安全的方法是在代码行后面设置or) JTextField2.setText(JTextField2

我的JavaSwing表单中有4个JTextfields。问题是我需要通过java代码将焦点从一个JTextField移到另一个,而不是使用tab键


如果JTextField2获得的焦点意味着需要选择JTextField2中的内容。我不知道该怎么做,请将您的正确代码与此问题关联起来。

您可以调用您想要焦点的文本字段。

这可能有点复杂

您必须将or包装并延迟到
invokeLater()
,然后放入其中(最安全的方法是在代码行后面设置or)

  • JTextField2.setText(JTextField2.getText)

  • JTextField2.selectAll()
编辑至@Andrew Thompson

private FocusListener fcsListener = new FocusListener() {

        @Override
        public void focusGained(FocusEvent e) {
            dumpInfo(e);
        }

        @Override
        public void focusLost(FocusEvent e) {
            //dumpInfo(e);
        }

        private void dumpInfo(FocusEvent e) {
            System.out.println("Source  : " + name(e.getComponent()));
            System.out.println("Opposite : " + name(e.getOppositeComponent()));
            System.out.println("Temporary: " + e.isTemporary());
            Component c = e.getComponent();//works for editable JComboBox too
            if (c instanceof JFormattedTextField) {
                ((JFormattedTextField) c).selectAll();
            } else if (c instanceof JTextField) {
                ((JTextField) c).selectAll();
            }//both methods not correct required setText(getText()) inside invokeLater
        }

        private String name(Component c) {
            return (c == null) ? null : c.getName();
        }
    };

“请输入正确的代码”请将您的最佳尝试以。添加您在阅读后尝试过的内容&文档(特别注意“选择”中的任何查找)也不会有任何影响。还请注意,这不是一条短信,所以它是“请”而不是“plz”。@sjohnfernandas-你是否真的因为不接受或回答任何答案而阅读了答案(对于这个问题和你的其他问题)?如果你继续这样下去,人们会停止帮助你…
JTextField2.setText(JTextField2.getText)
这不是没有效果,就是进入了无限循环吗?如果您在EDT中运行任何东西,或者从后台任务定期更新另一个JComponent(带有附加的侦听器),那么您可能会非常失去焦点,您必须在invokeLater中包装这两个代码行来强制焦点,为我处理除JTextPane之外的所有TextComponent您的编辑是有意义的,但它似乎与调用文本字段实例以将其设置为..本身的文本无关。