Event sequence: Action Event, Item Event and Change Event : JRadioButton « Swing « Java Tutorial





Event sequence: Action Event, Item Event and Change Event
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

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

public class JRadioButtonEventSequence {
  public static void main(String args[]) {
    JFrame frame = new JFrame("Grouping Example");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JPanel panel = new JPanel(new GridLayout(0, 1));

    ButtonGroup group = new ButtonGroup();
    JRadioButton aRadioButton = new JRadioButton("A");
    JRadioButton bRadioButton = new JRadioButton("B");

    ActionListener actionListener = new ActionListener() {
      String lastSelected;
      public void actionPerformed(ActionEvent actionEvent) {
        AbstractButton aButton = (AbstractButton)actionEvent.getSource();
        String label = aButton.getText();
        String msgStart;
        if (label.equals(lastSelected)) {
          msgStart = "Reselected: ";
        } else {
          msgStart = "Selected: ";
        }
        lastSelected = label;
        System.out.println(msgStart + label);
      }
    };
    ItemListener itemListener = new ItemListener() {
      String lastSelected;
      public void itemStateChanged(ItemEvent itemEvent) {
        AbstractButton aButton = (AbstractButton)itemEvent.getSource();
        int state = itemEvent.getStateChange();
        String label = aButton.getText();
        String msgStart;
        if (state == ItemEvent.SELECTED) {
          if (label.equals(lastSelected)) {
            msgStart = "Reselected -> ";
          } else {
            msgStart = "Selected -> ";
          }
          lastSelected = label;
        } else {
          msgStart = "Deselected -> ";
        }
        System.out.println(msgStart + label);
      }
    };
    ChangeListener changeListener = new ChangeListener() {
      public void stateChanged(ChangeEvent changEvent) {
        AbstractButton aButton = (AbstractButton)changEvent.getSource();
        ButtonModel aModel = aButton.getModel();
        boolean armed = aModel.isArmed();
        boolean pressed = aModel.isPressed();
        boolean selected = aModel.isSelected();
        System.out.println("Changed: " + armed + "/" + pressed + "/" +
          selected);
      }
    };

    panel.add(aRadioButton);
    group.add(aRadioButton);
    panel.add(bRadioButton);
    group.add(bRadioButton);

    aRadioButton.addChangeListener(changeListener);
    bRadioButton.addChangeListener(changeListener);

    aRadioButton.addActionListener(actionListener);
    bRadioButton.addActionListener(actionListener);

    aRadioButton.addItemListener(itemListener);
    bRadioButton.addItemListener(itemListener);

    frame.add(panel);
    frame.setSize(300, 200);
    frame.setVisible(true);
  }
  
}










14.9.JRadioButton
14.9.1.Creating JRadioButton Components
14.9.2.Using JRadioButtonUsing JRadioButton
14.9.3.Grouping JRadioButton Components in a ButtonGroupGrouping JRadioButton Components in a ButtonGroup
14.9.4.Determining the Selected JRadioButton in a Button Group
14.9.5.Listening to JRadioButton Events with an ActionListenerListening to JRadioButton Events with an ActionListener
14.9.6.Reference to the last selected item and check for reselectionReference to the last selected item and check for reselection
14.9.7.Listening to JRadioButton Events with a ChangeListenerListening to JRadioButton Events with a ChangeListener
14.9.8.Listening to JRadioButton Events with an ItemListenerListening to JRadioButton Events with an ItemListener
14.9.9.Event sequence: Action Event, Item Event and Change EventEvent sequence: Action Event, Item Event and Change Event
14.9.10.Getting selected JRadioButton in a containerGetting selected JRadioButton in a container
14.9.11.Customizing JRadioButton Look and Feel