2014-09-01 72 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