生物屋さんのためのゼロからのプログラミング

―忘れないための覚書 (たま~に更新)―

JRadioButtonの選択に応じてイベントを起こす。

今回は、JRadioButtonの選択とイベントをリンクさせたコードを書く。

import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

//JRadioButtonが選択された時にイベントを起こすために“ChangeListener”をimplementsする
public class RadioTest extends JFrame implements ChangeListener {
	
	JRadioButton [] radio;
	JPanel pane;
	JLabel label;
	
	//JRadioButtonが選択された時のイベント
	public void stateChanged(ChangeEvent e) {
		if (radio[0].isSelected()) {
			label.setText("Test1");
		} else if (radio[1].isSelected()) {
			label.setText("Test2");
		}
	}
	
	RadioTest () {
		radio = new JRadioButton [2];
		ButtonGroup group = new ButtonGroup();
		label = new JLabel ("Test1");
		radio[0] = new JRadioButton ("Test1");
		radio[1] = new JRadioButton ("Test2");
		group.add(radio[0]);
		group.add(radio[1]);
		
		//JRadioButtonが選択された時にイベントを起こすためのコード
		radio[0].addChangeListener (this);
		radio[1].addChangeListener (this);
		
		radio[0].setSelected(true);
		pane = new JPanel ();
		pane.setLayout(null);
		radio[0].setBounds(20,10, 80, 30);
		radio[1].setBounds (20, 40, 80, 30);
		label.setBounds(30, 70, 80, 30);
		pane.add(radio[0]);
		pane.add(radio[1]);
		pane.add(label);
		getContentPane().add(pane);
	}

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
		RadioTest frame = new RadioTest();
		frame.setBounds(100, 100, 70, 150);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
	}
}

JRadioButtonの選択でイベントを起こすためには、次の3つが必要。
(1) ChangeListenerの実装
(2) JRadioButtonをChangeListenerに加える。(addChangeListener)
(3) "public void stateChanged(ChangeEvent e)"の設定