1

私はJavaを初めて使用しますが、理解できない問題に遭遇しました。jbutton で 1 つのウィンドウを表示し、別のウィンドウを非表示にします。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();
        }

興味深いことに、パブリック変数 (Visible) が作成された JFrame 内のボタン (別名: [if] 部分) で同じことを行うと、これが機能しますが、else は実行されません。

この変数の変更を認識できる Main メソッドを取得するためにできることはありますか?

4

1 に答える 1

4

論理エラーがあると思います。

あなたはif(frame1.Visible)言うframe1.show()。しかしframe1、すでに表示されています!あなたがそれを隠しているようには見えません。

私の推測では、代わりに次のことを意図していたのでしょう。

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

== trueまた、補足として、または== falseブール値を使用する必要はありません。それらは、それらが表す値として自動的に条件付きで評価されます。

于 2012-10-15T19:18:57.773 に答える