焦点获得和焦点失去的事件

时间:2011-12-17 11:39:20

标签: java swing focus jtextfield

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

如果JTextField2获得的Focus意味着需要选择JTextField2中的内容。我不知道怎么做这个plz把你正确的代码与这个问题联系起来

2 个答案:

答案 0 :(得分:1)

您可以为需要关注的文字字段调用requestFocusInWindow()

答案 1 :(得分:1)

可能有点复杂

你必须将你的ActionActionListener换行并延迟到invokeLater(),然后放入(最安全的方式是设置如下代码行)

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