2011-02-04 3 views
8

그게 전부입니다. 옵션을 선택할 수있는 ButtonGroup을 만들 필요가 있습니다. 사용자가 선택한 옵션을 클릭하면 해당 항목의 선택을 취소하고 (아무 것도 선택하지 않음) 물론 이벤트를 캡처하여 무언가를 수행 할 수 있습니다. 당신은 어떤 선택을 할 수 없습니다 ButtonGroup를 서브 클래스,이에 버튼을 추가해야합니다실제 옵션을 선택 취소 할 수있는 JToggleButton의 ButtonGroup을 만드는 방법은 무엇입니까?

+2

사용자에 대한 직관적되지 않을 수 있습니다

나는 이런 식으로 해결했습니다. 선택 취소에 해당하는 주/선택 사항을 나타내는 옵션 하나를 만드는 것에 대해 생각해 보셨습니까? –

답변

9

는 여기에 설명 무슨하다고하는 방법을 정확하게 보여줍니다 buttongroup.

public class NoneSelectedButtonGroup extends ButtonGroup { 

    @Override 
    public void setSelected(ButtonModel model, boolean selected) { 
    if (selected) { 
     super.setSelected(model, selected); 
    } else { 
     clearSelection(); 
    } 
    } 
} 
+1

또는 익명의 내부 클래스로 충분합니다. 예 :'ButtonGroup myGroup = new ButtonGroup() {/ * 위의 코드 * /}; – captainroxors

0

이벤트를 캡처하여 처리합니다. 또한 아래를 수행하십시오.

@Override 
public void actionPerformed(ActionEvent e) { 
    ((JToggleButton)e.getSource()).setSelected(false); 
} 

편집 : 그러나 반군 ButtonGroup이 없습니다. 선택하지 않은 버튼/확인란을 button.setSelected(false)을 할 때 사전에 자바에 대한

0

솔루션은 1.6

public class NoneSelectedButtonGroup extends ButtonGroup { 
    private AbstractButton hack; 

    public NoneSelectedButtonGroup() { 
     super(); 
     hack = new JButton(); 
     add(hack); 
    } 

    @Override 
    public void setSelected(ButtonModel model, boolean selected) { 
     super.setSelected(selected ? model : hack.getModel(), true); 
    } 
} 
0

나는 이상한 행동을 발견. 내가 선택을 취소 한 것처럼 모든것의 선택이 취소되었습니다.

public class NoneSelectedButtonGroup extends ButtonGroup { 

    @Override 
    public void setSelected(ButtonModel model, boolean selected) { 
    if (selected) { 
     super.setSelected(model, selected); 
    } else if (getSelection() != model) { 
     clearSelection(); 
    } 
    } 
} 
관련 문제