2011-04-29 11 views
7

라디오 단추 두 개 (new Button(parent, SWT.RADIO))를 만들고 프로그래밍 방식으로 radioButton5.setSelection(true)을 사용하여 선택을 설정하면 이전에 선택한 라디오 단추도 선택 상태로 유지됩니다. 선택을 취소하려면 같은 그룹의 다른 모든 라디오 버튼을 반복해야합니까 아니면 더 간단한 대안이 있습니까? 미리 감사드립니다.SWT : 프로그래밍 방식으로 라디오 단추 설정

답변

6

불행히도 모든 옵션을 반복해야합니다. UI가 처음 나타날 때 BN_CLICKED 이벤트가 발생합니다.

void selectRadio() 
{ 
    Control [] children = parent._getChildren(); 
    for (int i=0; i<children.length; i++) { 
     Control child = children [i]; 
     if (this != child) child.setRadioSelection (false); 
    } 
    setSelection (true); 
} 

그래서 본질적으로 그 자체가 모든 라디오 버튼 반복하고 자신의 상태를 전환에 따라 일식 : Shell 또는 Group 또는 라디오 버튼의 어떤 컨테이너가 다음 메서드를 호출 SWT.NO_RADIO_GROUP 옵션으로 생성되지 않습니다 귀하의 경우.

라디오 버튼을 수동으로 선택할 때마다 BN_CLICKED 이벤트가 발생하고 자동 토글됩니다.

button.setSelection(boolean)을 사용하면 BN_CLICKED 이벤트가 발생합니다. 따라서 라디오 버튼을 자동으로 전환 할 필요가 없습니다.

자세한 내용은 org.eclipse.swt.widgets.Button 클래스를 확인하십시오.

-2

자동으로 발생합니다. 어떻게 단추를 만들고 있니? 그들은 같은 부모에 있습니까? 부모가 NO_RADIO_GROUP 스타일을 사용하고 있습니까?

+0

같은 부모에 있고 부모가 'NO_RADIO_GROUP'으로 생성되지 않은 경우에도 여전히 질문에 언급 된 동작을 나타냅니다. 적어도 윈도우 비스타에서는 이클립스 3.6과 동작이 비슷하다. 다른 OS 또는 이클립스 버전에서 작동하는 경우 ** SWT 버그 **. – Favonius

1

동일한 컴포지트의 라디오 단추는 그룹으로 작동합니다. 한 번에 하나의 라디오 버튼 만 선택됩니다.

Composite composite = new Composite(parent, SWT.NONE); 

    Button btnCopy = new Button(composite, SWT.RADIO); 
    btnCopy.setText("Copy Element"); 
    btnCopy.setSelection(false); 

    Button btnMove = new Button(composite, SWT.RADIO); 
    btnMove.setText("Move Element"); 
관련 문제