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