2016-11-28 44 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; 
     } 
相关问题