3

( Java APIによると)すべてAbstractButtonを追加することはできますが、どの要素を追加するのが本当に理にかなっているのかを尋ねたいと思いました。ButtonGroup

次の2つは間違いなく行います。

  • JRadioButton
  • JRadioButtonMenuItem

私は知りたかった:

  • JCheckBox<-のようJRadioButtonに、から継承しますJToggleButton
  • 他のAbstractButton
4

2 に答える 2

3

ButtonGroupボタンのセットの複数除外スコープを作成するために使用されます。同じButtonGroupオブジェクトでボタンのセットを作成するということは、それらのボタンの1つを「オン」にすると、グループ内の他のすべてのボタンがオフになることを意味します。

AButtonGroupは、から継承するオブジェクトの任意のセットで使用できますAbstractButton。通常、には、JRadioButtonMenuItem、またはButtonGroupのインスタンスが含まれます。のインスタンスをまたはの中に入れて、選択された状態を実装しないのは意味がありません。JRadioButtonJToggleButtonJButtonJMenuItemButtonGroupJButtonJMenuItem

最初は、グループ内のすべてのボタンが選択されていません。いずれかのボタンを選択すると、グループ内で常に1つのボタンが選択されます。ボタングループをクリアするために、プログラムでボタンを「オフ」にする方法はありません。「選択されていません」の外観を与えるにはJRadioButton、グループに非表示を追加し、プログラムでそのボタンを選択して、表示されているすべてのをオフにしますJRadioButtons。たとえば、「none」というラベルの付いた通常のボタンを配線して、非表示を選択することができますJRadioButton

使用例および使用方法の詳細については、JavaチュートリアルのセクションのButtonGroups 「使用方法」を参照してください。JRadioButtons

于 2012-05-25T07:21:23.377 に答える
2

上記の答えに加えて、追加のコードなしでグループ内の選択をクリアできる(グループボタンが選択されない状態)ButtonGroupを作成する方法があります-ButtonGroupを拡張し、このようにsetSelectedメソッドをオーバーライドするだけです:

public void setSelected ( ButtonModel model, boolean selected )
{
    if ( selected || !unselectable )
    {
        super.setSelected ( model, selected );
    }
    else
    {
        clearSelection ();
    }
}

これにより、ボタンの選択が解除されます。

于 2012-05-25T07:34:46.710 に答える