Widgets: Radio.java

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.border.*;

public class Radio extends JPanel implements ItemListener { //*1 Our own object, made of a JPanel, holding JRadioButtons and a ButtonGroup
    public Radio () {
	// Border around our JPanel
	setBorder (new LineBorder(Color.BLUE, 1)); //*1

	ButtonGroup g = new ButtonGroup (); //*4 ButtonGroup makes them behave as radio buttons

	JRadioButton rb = new JRadioButton ("I", false); //*2 Create buttons
	add (rb); //*3 Add button to our panel
	g.add (rb); //*5 Also add button to our ButtonGroup
	rb.addItemListener (this); //*6 Make entire Radio be listener for all buttons, use getItem() to disambiguate

	rb = new JRadioButton ("II", true); //*2
	add (rb); //*3
	g.add (rb); //*5
	rb.addItemListener (this); //*6

	rb = new JRadioButton ("III", false); //*2
	add (rb); //*3
	g.add (rb); //*5
	rb.addItemListener (this); //*6

	rb = new JRadioButton ("IV", false); //*2
	add (rb); //*3
	g.add (rb); //*5
	rb.addItemListener (this); //*6
    }
    
    public void itemStateChanged (ItemEvent e) {
	// Reports every select or deselect, we filter out
	if (e.getStateChange()==ItemEvent.SELECTED) {
	    System.out.println ("Radio: " + ((JRadioButton)e.getItem()).getText()); //*6
	}
    }
}
[download file]