2011-02-04 3 views
8

それだけです。オプションを選択できるButtonGroupを作成する必要があります。ユーザーが選択したオプションをクリックすると、その項目の選択が解除され(何も選択されません)、イベントをキャプチャして何かを行うことができます。 あなたは何の選択を許さないためにButtonGroupををサブクラス化し、これにあなたのボタンを追加する必要があります。実際のオプションの選択を解除できるJToggleButtonのButtonGroupの作成方法は?

+2

ユーザーのための直感的ではないかもしれません。あなたは、選択を解除することに対応する状態/選択肢を表現する1つの選択肢を作ることについて考えましたか? –

答えて

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); 
} 

EDIT: しかし、誰ButtonGroupを関与はありません。選択されていないボタン/チェックボックスにbutton.setSelected(false)を行うとき、事前のJava 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(); 
    } 
    } 
} 
0

ため

関連する問題