2014-09-01 73 views
0

在使输入验证正常工作时遇到一些问题。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); 
} 

回答

0

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

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

+0

谢谢。我在开始时声明有效为0,并没有在我的代码中显示它。对于那个很抱歉。我忘记了.equals(),因为我一直在研究其他语言,只是回到了Java。谢谢您的帮助! :) – user3126322 2014-09-01 12:04:33

+0

没问题。随意标记为已解决;) – Deltharis 2014-09-01 12:53:23