我对Java很陌生,但是遇到了我不明白的问题。我想要一个jbutton显示一个窗口并隐藏另一个窗口。我已经完成了一个无穷循环,可以在按下jbutton时侦听变量更改。

private void jButton1MouseClicked(java.awt.event.MouseEvent evt) { //Jbutton in question
      NewJFrame frame = new NewJFrame(); //another JFrame from which I created the public variable(Visible)
      frame.Visible = false;
}

    while (always == true) {     **//code in main method to test variable change**
        if (frame1.Visible == true) {
            frame1.show();
            frame2.hide();
        }
        else {
            frame1.show();
            frame2.hide();
        }


有趣的是,当我对创建了公共变量(可见)的JFrame中的按钮执行相同操作时,此方法起作用,又称:[if]部分,但else不执行。

我可以做些什么来使Main方法重新识别此变量更改吗?

最佳答案

我认为您有逻辑错误。

您说if(frame1.Visible)然后说frame1.show()。但是frame1已经可见!看起来您从未隐藏过它。

我的猜测是您的意图是:

    if (frame1.Visible == true) {
        frame1.hide();
        frame2.show();
    }


另外,作为旁注,您不必将== true== false与布尔值一起使用。它们将自动以有条件的值作为代表的值进行评估。

10-04 15:41