JOptionPane输入验证无效

时间:2014-09-01 08:52:22

标签: java validation input joptionpane

在使输入验证生效时遇到一些问题。

我做错了什么?

当您在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);
}

1 个答案:

答案 0 :(得分:0)

您的代码中不会将valid值分配给0。这意味着,在一次正确输入后,一切都将有效。作为旁注 - java具有布尔类型,在处理true-false值时应该使用它。

此外,请勿在字符串比较中使用!=或==。这比较了引用,在大多数情况下,即使对于相同的文本内容,它们也不会相同 - 请参阅How do I compare strings in Java?