( Java APIによると)すべてAbstractButton
を追加することはできますが、どの要素を追加するのが本当に理にかなっているのかを尋ねたいと思いました。ButtonGroup
次の2つは間違いなく行います。
JRadioButton
JRadioButtonMenuItem
私は知りたかった:
JCheckBox
<-のようJRadioButton
に、から継承しますJToggleButton
- 他の
AbstractButton
( Java APIによると)すべてAbstractButton
を追加することはできますが、どの要素を追加するのが本当に理にかなっているのかを尋ねたいと思いました。ButtonGroup
次の2つは間違いなく行います。
JRadioButton
JRadioButtonMenuItem
私は知りたかった:
JCheckBox
<-のようJRadioButton
に、から継承しますJToggleButton
AbstractButton
ButtonGroup
ボタンのセットの複数除外スコープを作成するために使用されます。同じButtonGroup
オブジェクトでボタンのセットを作成するということは、それらのボタンの1つを「オン」にすると、グループ内の他のすべてのボタンがオフになることを意味します。
AButtonGroup
は、から継承するオブジェクトの任意のセットで使用できますAbstractButton
。通常、には、JRadioButtonMenuItem、またはButtonGroup
のインスタンスが含まれます。のインスタンスをまたはの中に入れて、選択された状態を実装しないのは意味がありません。JRadioButton
JToggleButton
JButton
JMenuItem
ButtonGroup
JButton
JMenuItem
最初は、グループ内のすべてのボタンが選択されていません。いずれかのボタンを選択すると、グループ内で常に1つのボタンが選択されます。ボタングループをクリアするために、プログラムでボタンを「オフ」にする方法はありません。「選択されていません」の外観を与えるにはJRadioButton
、グループに非表示を追加し、プログラムでそのボタンを選択して、表示されているすべてのをオフにしますJRadioButtons
。たとえば、「none」というラベルの付いた通常のボタンを配線して、非表示を選択することができますJRadioButton
。
使用例および使用方法の詳細については、JavaチュートリアルのセクションのButtonGroups
「使用方法」を参照してください。JRadioButtons
上記の答えに加えて、追加のコードなしでグループ内の選択をクリアできる(グループボタンが選択されない状態)ButtonGroupを作成する方法があります-ButtonGroupを拡張し、このようにsetSelectedメソッドをオーバーライドするだけです:
public void setSelected ( ButtonModel model, boolean selected )
{
if ( selected || !unselectable )
{
super.setSelected ( model, selected );
}
else
{
clearSelection ();
}
}
これにより、ボタンの選択が解除されます。