2013-03-25 6 views
4

내 프로그램에서이 메소드가 호출 될 때마다 모든 체크 박스를 선택 해제하고 싶습니다. 누군가가 왜 작동하지 않는지 설명 할 수 있습니까? 이 메서드를 호출 할 때마다 체크 상자가 계속 선택됩니다.자바의 체크 박스를 해제하십시오

private void nextQuestionButtonActionPerformed(java.awt.event.ActionEvent evt) {             

    clearOptions(); 

}  

public void clearOptions() 
{ 
    //Make sure the check boxes are not checked 
    optionA.setSelected(false); 
    optionB.setSelected(false); 
    optionC.setSelected(false); 
    optionD.setSelected(false); 
} 
+0

"checked"는 속성이므로 optionC.Checked = false로 설정해야한다고 생각합니다. 하지만 확실하지 않음 –

+3

전체 코드를 표시하십시오 .. –

+0

문제를 재현 할 수있는 예제를 제공하십시오. –

답변

-1

일반적으로 스윙에서 백엔드에서 변경 한 내용은 시각적 요소로 전파되지 않습니다. 잘 알려진 예외 중 하나가 JTextField.setText()입니다 (setText를 호출하면 모든 시각적 텍스트 요소가 즉시 업데이트됩니다).

API 문서에도 설명되어 있습니다. http://docs.oracle.com/javase/6/docs/api/javax/swing/AbstractButton.html#setSelected(boolean).

코드에 머물러있을 수 있지만 컨테이너 유효성을 검사해야합니다.

+1

-1, 구성 요소의 속성이 변경되면 Swing이 자동으로 구성 요소를 다시 그립니다. setSelected (...) 메서드를 호출하면 구성 요소가 자체적으로 다시 칠하게됩니다. validate()를 수행 할 필요가 없습니다. AWT의 기존 요구 사항 일 수도 있지만 Swing에서는 필요하지 않습니다. – camickr

+0

@ PeterMmm은 확인란을 선택 취소 할 수있는 다른 방법이 있습니까? – user2175095

+0

이것을 다시 읽으면 Camickr가 옳습니다. – PeterMmm

7

우선 모든 체크 상자의 코드를 예를 들어 상태 변경 방법 & 위에 가져와야합니다. 확인란을 선택 취소하면 상태 변수를 만들 수 있습니다. & 변수 값을 false에 넣습니다. & 그 후 checkbox.setSelected(false); 또는 boolean state = false; CheckBox.setSelected(state);이라고 부를 수 있습니다!

0

가장 쉬운 방법은 같은 확인란을 모든 체크 박스에 적용하는 것입니다. 그리고 나서 다음을 사용하십시오 :

buttonGroup1.clearSelection(); 

거의 모든 방법을 시도한 후. 이것은 가장 쉽고 효율적인 방법입니다.

0

확실한 경우 checkbox이 표시되면 토글 할 수 있습니다.

checkbox.toggle(); 
관련 문제