Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 假动作事件不';不要打开窗户。(密码对话框)_Java_Passwords - Fatal编程技术网

Java 假动作事件不';不要打开窗户。(密码对话框)

Java 假动作事件不';不要打开窗户。(密码对话框),java,passwords,Java,Passwords,我使用JOptionPane confirm对话框输入密码,它有OK和Cancel按钮,当我使用while循环检测何时输入了正确的密码时,当用户按下Cancel或“X”时,我会触发fake actionEvent以使用此。dispose()处理窗口;但由于某种奇怪的原因,它无法工作,所以不管怎样,窗口都会打开 代码如下: while(identifier<1) { if(action == 0) { if(Arrays.equals(password.getPassword()

我使用JOptionPane confirm对话框输入密码,它有OK和Cancel按钮,当我使用while循环检测何时输入了正确的密码时,当用户按下Cancel或“X”时,我会触发fake actionEvent以使用此。dispose()处理窗口;但由于某种奇怪的原因,它无法工作,所以不管怎样,窗口都会打开

代码如下:

while(identifier<1) {
  if(action == 0) {
    if(Arrays.equals(password.getPassword(),pass)) {
      break;
    } else {
      actionPerformed(new ActionEvent(2,-1,""));
      break;
    }
  } else {
    actionPerformed(new ActionEvent(2,-1,"");
    break;
  }
}

java.util.EventObject.getSource()返回一个对象…e.getSource()==2在我看来不正确…请尝试输出e.getSource()以查看它返回的内容。为什么这在while循环中?每种情况都有一个break语句。因为我正在使用它从确认对话框中检测OK/CANCEL,现在我通过仔细调试每一行对它进行了分类,我发现问题在于它试图在窗口实际初始化之前处理它。所以我把整个while语句移到了使窗口可见的行下面,现在它可以按照我的要求工作了。谢谢,对不起。这听起来很可怕。这听起来像是在事件调度线程之外操作UI组件,这是一个非常糟糕的主意
if(e.getSource()==2) {
  this.dispose();
}