我的java swing表单中有4个JTextfields。问题是我需要通过Java代码将Focus从一个JTextField移动到另一个JTextField而不是使用tab键。
如果JTextField2获得的Focus意味着需要选择JTextField2中的内容。我不知道怎么做这个plz把你正确的代码与这个问题联系起来
答案 0 :(得分:1)
您可以为需要关注的文字字段调用requestFocusInWindow()
。
答案 1 :(得分:1)
可能有点复杂
你必须将你的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();
}
};