Java 验证Swing GUI中的所有字段
我有个问题。我创建了一个Swing GUI表单。此表单包含JTextFields、JComboBox组件 现在我想做的是,当用户按下完成按钮时,我想验证JTextFields和JComboBox组件。我想为所有JTextFields编写通用方法,为JComboxes编写另一个通用方法。有人知道验证API吗Java 验证Swing GUI中的所有字段,java,swing,validation,Java,Swing,Validation,我有个问题。我创建了一个Swing GUI表单。此表单包含JTextFields、JComboBox组件 现在我想做的是,当用户按下完成按钮时,我想验证JTextFields和JComboBox组件。我想为所有JTextFields编写通用方法,为JComboxes编写另一个通用方法。有人知道验证API吗 我不需要逐个验证所有字段。这是不可能的。相反,您必须创建一个继承JTextField的新类,然后将validate()函数设置为private或protected,并在每次getText()(
我不需要逐个验证所有字段。这是不可能的。相反,您必须创建一个继承JTextField的新类,然后将
validate()
函数设置为private
或protected
,并在每次getText()
(这意味着您必须@覆盖它)时调用它
另一种方法是使用Container.getComponent()
并检查instanceof
,然后分别验证每个字段。但是,这与您的要求相反。如果“验证”表示“检查所有字段”。。。然后,是-您的“验证”例程将逐个检查所有字段:)
您还可以“边走边验证”。实现这一点的方法有很多,包括:
有一些第三方api可用。你可以发展你自己的
- 必填字段
- 电子邮件验证
- 最大和最小长度等
这里是一个示例教程,用于这里的一个选项是使用Swing的
InputVerifier
来验证所使用的每个JComboBox
和JTextField
的输入。您可以在组件之间共享公共验证器:
public class MyNumericVerifier extends InputVerifier {
@Override
public boolean verify(JComponent input) {
String text = null;
if (input instanceof JTextField) {
text = ((JTextField) input).getText();
} else if (input instanceof JComboBox) {
text = ((JComboBox) input).getSelectedItem().toString();
}
try {
Integer.parseInt(text);
} catch (NumberFormatException e) {
return false;
}
return true;
}
@Override
public boolean shouldYieldFocus(JComponent input) {
boolean valid = verify(input);
if (!valid) {
JOptionPane.showMessageDialog(null, "Invalid data");
}
return valid;
}
}
InputVerifier verifier = new MyNumericVerifier()
comboBox.setInputVerifier(verifier);
你的意思是什么,验证是什么(在容器中,值来自,e.i.?)你可以看看这个JTable
相关的+1你可以在shouldYieldFocus()
中提供反馈。我认为Kenai验证API是有用的。谢谢大家。