2014-05-01 9 views
0

버튼을 클릭 할 때 가시성을 false로 설정하려고하지만 컴파일러에 "호환되지 않는 유형"이 표시됩니다. 그것은 I 부울 결과를 반환하지 않는 JFrame, JButton, JLabel, BorderLayout, ActionEvent버튼을 클릭하여 가시성을 변경하십시오.

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)ActionListener를 사용하고, 그래서 만약 블록의 테스트 부 내에 배치 할 수없는 if (frame.setVisible(true)) 말한다 어디에 오류가 발생한다. API를 살펴보면 void - 아무것도 반환하지 않는 것으로 선언되어 있다는 것을 알 수 있습니다. 따라서 부울 검사의 경우 내부에 넣지 마십시오. 메소드가 무효 복귀 선언 등 코드 일에 해당되며,

// Window class 
public void setVisible(boolean visible) 

그래서 다시 :

if (void) { 
    // do something 
} 

는 재 작성, 자바 API 당은 setVisible 방법 서명은 아래와 같다

void가 true 또는 false가 아니므로 컴파일러에 이해가되지 않습니다.

2

은 당신이 사용할 필요가 대신입니다 :

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

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

당신은 심지어 if statement와 필요하지 않을 수도 있습니다 closeButton을 누르면 바로 항상 frame.setVisible(false)을한다.

관련 문제