在使输入验证生效时遇到一些问题。
我做错了什么?
当您在JOptionPane中选择“确定”时,它仍然会分配值并且不会显示错误对话框。
public void actionPerformed(ActionEvent e) {
do {
int option = JOptionPane.showConfirmDialog(calendarPanel.getMainView(), message, "Enter OT Details",
JOptionPane.OK_CANCEL_OPTION);
if (option == JOptionPane.CANCEL_OPTION) {
break;
}
if (option == JOptionPane.OK_OPTION) {
if (workTypeA.getText() != "" && startTimeA.getText() != "" && finishTimeA.getText() != ""
&& otHoursA.getText() != "") {
workTypeString = String.valueOf(workTypeA.getText());
startTimeString = String.valueOf(startTimeA.getText());
finishTimeString = String.valueOf(finishTimeA.getText());
otHoursString = String.valueOf(otHoursA.getText());
rateCodeString = String.valueOf(rateCodeA.getSelectedItem());
System.out.println(workTypeString);
valid = 1;
} else {
JOptionPane.showMessageDialog(null, "Please fill out all fields!", "Error",
JOptionPane.INFORMATION_MESSAGE);
}
}
} while (valid == 0);
}
答案 0 :(得分:0)
您的代码中不会将valid
值分配给0。这意味着,在一次正确输入后,一切都将有效。作为旁注 - java具有布尔类型,在处理true-false值时应该使用它。
此外,请勿在字符串比较中使用!=或==。这比较了引用,在大多数情况下,即使对于相同的文本内容,它们也不会相同 - 请参阅How do I compare strings in Java?