2016-11-28 29 views
0

我想編寫一個循環,用戶完成三次嘗試後結束循環,單擊取消或用紅色x關閉窗口。紅色x和使用三個嘗試部分工作正常。但是取消按鈕沒用,並且與OK按鈕相同。當用戶單擊「取消」或完成允許的嘗試次數時退出循環

我已經寫了一條if語句,但它是無效的。提示用戶輸入密碼的窗口將繼續彈出,直到所有允許的嘗試用完,即使用戶按下取消。這是我到目前爲止:

String[] options = new String[]{"OK", "Cancel"}; 

    int tries = 0; 

    String passString = ""; 

    int option = JOptionPane.OK_OPTION; 

    while (!isValidPassword(passString) && tries < 3) { 

      option = JOptionPane.showOptionDialog(null, panel, "The title", 
      JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, 
      null, options, options[1]); 


      if (option == JOptionPane.CANCEL_OPTION || option == JOptionPane.CLOSED_OPTION) { 
       break; 
      } 

回答

0

1-)您應該增加while循環中的嘗試。

String[] options = new String[]{"OK", "Cancel"}; 

int tries = 0; 

String passString = ""; 

int option = JOptionPane.OK_OPTION; 

while (!isValidPassword(passString) && tries < 3) { 

    option = JOptionPane.showOptionDialog(null, panel, "The title", 
     JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, 
     null, options, options[1]); 

    tries++; 

    if (option == JOptionPane.CANCEL_OPTION || option == JOptionPane.CLOSED_OPTION) { 
     break; 
    } 
+0

這是我從哪裏來的?我在我的while循環中沒有我。 –

+0

ops對不起,它應該是試圖大聲笑 – Maestus

+0

ops對不起,它應該是試圖大聲笑@Jason_Silva – Maestus

0

使用JOptionPane.YES_NO_CANCEL_OPTION代替JOptionPane.CANCEL_OPTION,這應該可以解決這個問題。更改後您的代碼將如下

String[] options = new String[]{"OK", "Cancel"}; 

int tries = 0; 

String passString = ""; 

int option = JOptionPane.OK_OPTION; 

while (!isValidPassword(passString) && tries < 3) { 

     option = JOptionPane.showOptionDialog(null, panel, "The title", 
     JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, 
     null, options, options[1]); 


     if (option == JOptionPane.YES_NO_CANCEL_OPTION || option == JOptionPane.CLOSED_OPTION) { 
      break; 
     } 
相關問題