当用户单击“取消”或完成允许的尝试次数时退出循环
问题描述:
我想编写一个循环,用户完成三次尝试后结束循环,单击取消或用红色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;
}
答
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;
}
答
使用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;
}
这是我从哪里来的?我在我的while循环中没有我。 –
ops对不起,它应该是试图大声笑 – Maestus
ops对不起,它应该是试图大声笑@Jason_Silva – Maestus