2014-05-01 225 views
0

我試圖將單擊按鈕時可見性設置爲false,但編譯器顯示「不兼容的類型」。那裏說if (frame.setVisible(true))我用JFrameJButtonJLabelBorderLayoutActionEvent,並ActionListener單擊按鈕以更改可見性

Object source = event.getSource(); 

     if (source == changeTextButton) 
     { 
      if (label.getText().equals(LABEL1)) 
      { 
       label.setText(LABEL2); 
      } 
      else 
      { 
       label.setText(LABEL1); 
      } 
     } // end of if (source == button) 

     if (source == closeButton) 
     { 
      if (frame.setVisible(true)) 
      { 
       setVisible(false); 
      } 
     } // end of if (source == closeButton) 
+0

哪條線給你錯誤? –

+0

「if(frame.setVisible(true))」 – user3479783

+0

而且,問題在於此語句不是有效的Java。你實際上陳述了「if(void)」,這是沒有意義的。 –

回答

4

frame.setVisible(true)不返回布爾值結果,因此不能放在一個如果塊的測試部分內發生的錯誤。請看看API,你會發現它被聲明爲返回void - 什麼都沒有 - 所以如果布爾檢查的話,不要把它放在裏面。

要重申,按照Java的API,該setVisible方法簽名的樣子:

// Window class 
public void setVisible(boolean visible) 

如此反覆,該方法被聲明爲返回void,所以你的代碼就相當於做:

if (void) { 
    // do something 
} 

這對編譯器沒有意義,因爲void既不是真也是false。

2

你需要使用什麼來代替:

if(frame.isVisible()){ 
fram.setVisible(False); 
} 

frame.isVisible() returns a boolean (true or false) 

你可能甚至不需要if statement,只是始終做到frame.setVisible(false)當按下closeButton