2012-10-15 4 views
1

저는 Java가 새로 도입되었지만 이해가 안되는 문제가 발생했습니다. 하나의 창을 표시하고 다른 창을 숨길 jbutton을 원합니다. jbutton을 눌렀을 때 변수 변경을 기다리는 무한 루프로이 작업을 수행했습니다. I는 (가시) 공용 변수 작성된의 JFrame의, AKA 내부 버튼과 동일한 기능을 수행 할 때변수 변경을 인식하지 못했습니다.

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이 작동시 : [] 만약 일부 있지만 다른 실행하지 않는다.

Main 메서드에서이 변수 변경을 인식 할 수있는 방법이 있습니까?

+1

버튼 클릭 이벤트만으로 각 프레임 가시성을 전환하지 않는 이유는 무엇입니까? 'while (true) '루프가 필요없고 CPU를 쓰러 뜨리면 – climbage

+0

동의합니다. click 이벤트를 수신해야합니다. 루프를 정당화 할 필요가 없으며 루프를 사용해야하는 경우이를 터뜨리는 것을 잊지 마십시오. –

답변

4

나는 논리 오류가 있다고 생각합니다.

if(frame1.Visible) 다음에 frame1.show()이라고 말합니다. 하지만 frame1이 이미 표시되어 있습니다. 당신이 그것을 숨기는 것처럼 보이지 않습니다.

내 생각 엔 당신의 의도가 대신했다 될 것이다 :

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

또한, 보조 노트로,이 논리 값으로 == true 또는 == false을 사용할 필요가 없습니다. 조건에 따라 자동으로 평가됩니다.

+0

고마워, 오늘 이걸보고 너무 어리 석다. –

+1

@MarthinusBosman 하하,하지 마! 누구나 어딘가에서 시작합니다. 심지어 가장 노련한 프로그래머조차도 실수를 저지르고, 코드를 돌아보고, "... 내가 무슨 생각을 했니?" – asteri

관련 문제