JRadioButtonEvent.java



/** Swingコンポーネントのイベント処理(2) */
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JRadioButtonEvent extends JPanel {
 
  /** Canvasのオブジェクト */
    public Canvas canvas;

  /** コンストラクタ */
    public JRadioButtonEvent() {
        ButtonGroup group = new ButtonGroup();
        ChoiceAdapter adapter = new ChoiceAdapter();
        Color[] colors = { Color.black, Color.red, Color.orange,
                           Color.yellow, Color.green, Color.cyan,
                           Color.blue, Color.magenta, Color.white
                         };
        JRadioButton[] radios = new JRadioButton[colors.length];
        for( int i=0; i<colors.length; i++ ) {
            radios[i] = new JRadioButton();
            radios[i].setBackground( colors[i] );
            group.add( radios[i] );
            add( radios[i] );
            radios[i].addItemListener( adapter );
        }
        radios[0].setForeground( Color.white );
     //   group.setSelected( radios[0].getModel(), true );
        canvas = new Canvas();
        canvas.setBackground( Color.black );
        canvas.setSize( 128, 128 );
        add( canvas );
    }
 
  /** JRadioButtonのイベントを処理するアダプタのクラス */
    class ChoiceAdapter implements ItemListener {

     /** イベントを処理するメソッド */
        public void itemStateChanged( ItemEvent evt ) {

            JRadioButton rb = (JRadioButton)(evt.getItemSelectable());
            canvas.setBackground( rb.getBackground() );
        }
    } // ChoiceAdapterのクラス定義の終わり
 
  /** 最初に呼び出されるメソッド */
    public static void main( String argv[] ) {
 
        JFrame frame = new JFrame( "JRadioButton Event Test" );
        JRadioButtonEvent panel = new JRadioButtonEvent();
        frame.getContentPane().add( panel );
        frame.pack();
        frame.setVisible( true );
    }
}