2012-10-15 114 views
1

我對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(); 
     } 

Interrestingly,這作品時,我做同樣的與被創建的公共變量(可見光)JFrame中,AKA內的按鈕:[IF]的一部分,但其他人不執行。

有什麼我可以做的,讓主方法rocognize這個變量的變化?

+1

爲什麼不只是讓按鈕點擊事件切換每個幀的可見性?有一個'while(true)'循環是不必要的,而且我同意CPU – climbage

+0

,你應該只聽點擊事件。循環沒有理由,當有必要使用循環時,不要忘記打破循環。 –

回答

4

我認爲你有一個邏輯錯誤。

你說if(frame1.Visible)然後frame1.show()。但frame1已經可見!它看起來並不像你曾經隱瞞過它。

我的猜測是你的意圖是不是有:

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

此外,作爲一個側面說明,你不必使用== true== false與布爾值。他們將被自動評估爲有條件的值。

+0

謝謝,今天感覺這麼愚蠢回頭看。 –

+1

@MarthinusBosman哈哈,別!每個人都從某個地方開始,即使是最有經驗的程序員也會犯錯,回頭看他們的代碼,並想知道「......我在想什麼?」 – asteri