2016-12-15 7 views
0

현재 내가 화면에 확인란을 추가 할 수있는 곳에서 문제가 발생하고 클릭 할 때 필요에 따라 상태가 바뀌지 만 선택 데이터를 사용하여 작업 할 때, true 또는 false인지 여부에 관계없이 항상 원래 값을 반환합니다.JCheckBox는 항상 참/거짓을 반환하지만 변경하지 않음

내 첫 번째 코드 조각은 isSelected(); 매 틱마다 지속적으로 실행되는 if 문 내에서 그런 다음 검사 코드는 다음과 같습니다

SVelRand = new JCheckBox("Random", true); 
    SVelRand.setBounds(50, 30, 90, 20); 

:

boolean sel = SVelRand.isSelected(); 

    if(sel){ 

     System.out.print("Selected"); 

    }else{ 

     System.out.print("Not Selected"); 


    } 

내가 찾은이 내가 만들 경우 아래 항목 리스너를 구현하기 위해 노력 작동하지 않았다 때 SVelRand 내가 사용하여 만든 내 체크 박스입니다 jcheckbox하지만 여전히 초기 값 세트를 계속 반환합니다.

SVelRand.addItemListener(new ItemListener() { 
      public void itemStateChanged(ItemEvent e) { 
      System.out.println(SVelRand.isSelected()); 
      } 
     }); 

나는 또한 어떤 베어링을 가지고 넣다 프레임에 추가하기 전에 동일 패널 (Panel)에 라벨과 JTextField를 그리기입니다. 그리고 레이아웃이 아닌 setBounds를 사용하는 이유는 비표준 레이아웃을 얻기 위해 정확한 위치에 각 구성 요소를 추가 할 수 있기 때문입니다.

도움이 될 것입니다. 당신은 기본적으로 선택으로 당신의 체크 박스를 시작하는 경우 액션 리스너 함수에서

답변

-1

단지

// way up above everything 
public boolean toggleState=false; 

// then later 
SVelRand.addItemListener(new ItemListener() { 
public void itemStateChanged(ItemEvent e) { 
    this.toggleState=(!this.toggleState); 
    String message=(this.toggleState) ? "checked" : "unchecked"; 
    System.out.println("Checkbox is "+message); 
} 
}); 

부울 A (클래스 범위)을 추적, 사실이

+0

덕분에 toggleState의 초기 값을 변경 힙, 그 위대한 지금 일하고있다. 아직도 내장 된 방법이 작동하지 않았지만이 방법을 계속 사용하려고하는 이유를 혼란스럽게합니다. – user1690395

+0

필드가 필요한 이유는 무엇입니까? 불필요한 복잡성이 추가되고 있습니다. ItemEvent 객체가 보유하고있는 상태를 점검해야하는 이유는 무엇인가? 'if (e.getStateChange() == ItemEvent.SELECTED)'만 있으면됩니다. –