ButtonGroup を使う

ButtonGroup で CheckBox を排他制御します。

前田稔の超初心者のプログラム入門

プログラムの作成

  1. メモ帳などでタイプして CheckGroup.java の名前で保存して下さい。
    //★ ButtonGroup を使う    前田 稔
    import java.awt.*;
    import javax.swing.*;
    import javax.swing.event.*;
    
    class CheckGroup extends JFrame implements ChangeListener
    {   boolean     r=true, g=false, b=false;
        JCheckBox   red, green, blue;
    
        // Main()
        public static void main(String[] args)
        {   new CheckGroup();  }
    
        // Constructor
        CheckGroup()
        {   getContentPane().setLayout(new FlowLayout());
    
            ButtonGroup group = new ButtonGroup();
    
            red = new JCheckBox("Red",r);
            green = new JCheckBox("Green",g);
            blue = new JCheckBox("Blue",b);
    
            group.add(red);
            group.add(green);
            group.add(blue);
    
            red.addChangeListener(this);
            green.addChangeListener(this);
            blue.addChangeListener(this);
    
            getContentPane().add(red);
            getContentPane().add(green);
            getContentPane().add(blue);
    
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setTitle("JCheckBoxTest");
            setSize(300, 200);
            setVisible(true);
        }
    
        public void stateChanged(ChangeEvent e)
        {   JCheckBox cb = (JCheckBox)e.getSource();
            if (cb==red)    r= cb.isSelected();
            if (cb==green)  g= cb.isSelected();
            if (cb==blue)   b= cb.isSelected();
            System.out.println("Red:" + r + "  Green:" + g + "  Blue:" + b);
        }
    }
    
  2. 基本的には Checkbox を使う と同じですが、 ButtonGroup() を使って、排他制御(一個しか選択できない)を設定します。
    ButtonGroup group をインスタンス化して、group.add() で ButtonGroup に登録するだけです。
            ButtonGroup group = new ButtonGroup();
    
            red = new JCheckBox("Red",r);
            green = new JCheckBox("Green",g);
            blue = new JCheckBox("Blue",b);
    
            group.add(red);
            group.add(green);
            group.add(blue);
        

超初心者のプログラム入門(Java2)