【发布时间】:2014-04-20 04:25:28
【问题描述】:
我想在按钮单击时验证几个文本字段。
主要概念是让用户在几个文本字段中输入几个数字,并在他单击按钮时运行一些方法来验证输入。
- 检查文本字段中是否只有数字。
- 检查文本字段中是否有重复的数字。
- 检查所有 6 个字段是否包含某个值。
- 检查数字是否在 1-100 范围内
我想在按钮点击时运行验证
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
}
这些是我要验证的文本字段:
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;
private javax.swing.JTextField jTextField3;
private javax.swing.JTextField jTextField4;
private javax.swing.JTextField jTextField5;
private javax.swing.JTextField jTextField6;
我在网上找到了一些代码,但我似乎无法让它工作。 代码如下:
JTextField[] fields;
void validation() { //call when appropriate(ie ActionListener of JButton)
System.out.println( "Called validation!");
int[] nums = new int[fields.length];
Set<Integer> set = new HashSet<>();
System.out.println( "Called validation!" + nums);
for (int i = 0; i < fields.length; i++) {
try {
nums[i] = Integer.parseInt(fields[i].getText());
} catch (NumberFormatException ex) {
//not a valid number tell user of error
JOptionPane.showMessageDialog(null,"Not a valid format");
return;
}
if (nums[i] < 1 || nums[i] > 48) {
//out of number range tell user of error
JOptionPane.showMessageDialog(null,"Range error");
return;
}
if (!set.add(nums[i])) {
//duplicate element tell user of error
JOptionPane.showMessageDialog(null,"Duplicate");
return;
}
}
JOptionPane.showMessageDialog(null,"A, OK");
}
我怎样才能使这种方法在按钮点击时起作用。 当我运行此方法时,netbeans 显示错误:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException...
【问题讨论】:
-
你从未初始化你的
JTextField[]。除此之外,还有很多问题。你应该只保留数组,而不是一堆单独的变量——这是不必要的。您是否考虑过使用InputVerifier?
标签: java swing validation jtextfield user-input