有没有一种简单的方法,以validate一组JTextFields在Java.我目前正在使用sqlite manager,neatbeans IDE创建一个简单的表单,收集信息以将作业添加到数据库中.我意识到JTextFields太多了.如何通过sqllite抛出可以自定义的异常错误,或者通过属性对话框在Neatbeans中验证每个JTextField.验证是存在检查,即已输入值.自定义验证消息?
是否有某种方法可以检测是否取消选择了JTextField,即选择了WAS字段,但现在您已经选择了其他内容.我想这样做的原因是因为我想在用户表单中检查任何非法字符,然后才会尝试提交数据.如果有一些更容易的方法,而不是我试图解决它的方式,我会很乐意接受启蒙.
我有2个JTextFields:
JTextField txtJobType, txtPriorityCode;
Run Code Online (Sandbox Code Playgroud)
这是我需要的功能:
当用户在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 {
}
}
Run Code Online (Sandbox Code Playgroud)
因此,如果该字段不存在或文本为空,则将焦点返回到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();
}
}
Run Code Online (Sandbox Code Playgroud)
这是问题开始的地方:如果用户将jobType和制表符保留为优先级,则代码会尝试将焦点返回到jobtype,但由于此时优先级也为空,它将尝试从jobtype返回焦点,从而产生此输出:
PriorityCode Focus Lost
JobType Focus Lost
PriorityCode Focus Lost
JobType Focus Lost
Run Code Online (Sandbox Code Playgroud)
任何有关如何实现此行为的帮助表示赞赏,因为我必须为至少10个其他文本字段执行此操作.
谢谢!
可能重复:
有没有办法只接受JTextField中的数值?
Swing的JTextField上有任何功能只允许在一系列数字中使用正数吗?
示例:我只能输入10到30之间的数字.此范围之外的数字甚至不会出现在字段中.