我有 2 个 JTextField:
JTextField txtJobType, txtPriorityCode;
这是我需要的功能:
当用户在 txtJobType 中输入“管理”并点击选项卡(或单击离开)时,将进行错误检查以查看该字段是否为空或输入的文本是否存在于数据库中。我这样做的方式是:
private void txtJobTypeFocusLost(java.awt.event.FocusEvent evt) {
System.out.println("JobType Focus Lost");
if (!checkFieldExists(txtJobType.getText(), "jobType", "jobCode",
JobType.class) || txtJobType.getText().isEmpty()) {
txtJobType.requestFocusInWindow();
txtJobType.selectAll();
} else {
}
}
因此,如果该字段不存在或文本为空,则将焦点返回到 txtJobType 并突出显示所有文本(如果有)
这没有问题。但是,我有 txtPriorityCode 字段,它需要具有完全相同的行为。所以我做了:
private void txtPriorityCodeFocusLost(java.awt.event.FocusEvent evt) {
System.out.println("PriorityCode Focus Lost");
if (!checkFieldExists(txtPriorityCode.getText(), "priority", "priorityCode",
Priority.class) || txtPriorityCode.getText().isEmpty()) {
txtPriorityCode.requestFocusInWindow();
txtPriorityCode.selectAll();
}
}
这就是问题开始的地方:如果用户将 jobType 和 tabs 留给 Priority,那么代码会尝试将焦点返回给 jobtype,但由于此时priority 也是空白的,它会尝试从 jobtype 中取回焦点,从而导致此输出:
PriorityCode Focus Lost
JobType Focus Lost
PriorityCode Focus Lost
JobType Focus Lost
感谢任何有关如何实现此行为的帮助,因为我必须为至少 10 个其他文本字段执行此操作。
谢谢你!