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

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

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

您可以为要聚焦的文本字段调用requestFocusInWindow()

这可能有点复杂

你必须将Action或ActionListener包装并延迟到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(); } };