Элемент управления JRadioButton предназначен для организации выбора только одного значения из нескольких возможных. Для этого несколько элементов JRadioButton объединяются в одну группу, которая работает как единое целое - если выбрать одну из радиокнопок, входящих в группу, то остальные радиокнопки из этой группы становятся невыбранными.
Вот пример кода:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MyFrame
extends JFrame
implements ActionListener {
// Переменные для радиокнопок.
public JRadioButton r1, r2, r3;
// Переменная для группы радиокнопок.
public ButtonGroup bg = new ButtonGroup();
// Конструктор.
public MyFrame() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
// Устанавливаем размеры и расположение.
setLocation(400, 200);
setSize(200, 200);
setTitle("Title");
// Задаем контейнер для компонентов.
Container con = getContentPane();
con.setLayout(new FlowLayout());
// Создание радиокнопок.
r1 = new JRadioButton("Java");
r2 = new JRadioButton("C/C++");
r3 = new JRadioButton("C#");
// Добавление радиокнопок к контейнеру.
con.add(r1);
con.add(r2);
con.add(r3);
// Добавление радиокнопок в группу.
bg.add(r1);
bg.add(r2);
bg.add(r3);
// Указание обработчиков для радиокнопок.
r1.addActionListener(this);
r2.addActionListener(this);
r3.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
// Изменение заголовка окна в зависимости от выбранной радиокнопки.
setTitle(e.getActionCommand());
}
public static void main(String[] args) {
// Создание главного окна.
new MyFrame().setVisible(true);
}
public void windowClosing(WindowEvent ev) {
System.exit(0);
}
}
Обратите внимание на следующие моменты. Во-первых, мы объявили наш класс реализующим интерфейс ActionListener:
public class MyFrame
extends JFrame
implements ActionListener {
...
Это мы сделали для возможности добавления обработчика нажатия на наши радиокнопки.
Во-вторых, для объединения радиокнопок в группу мы объявили переменную bg типа ButtonGroup и все радиокнопки в эту группу добавили:
...
// Добавление радиокнопок в группу.
bg.add(r1);
bg.add(r2);
bg.add(r3);
...
В-третьих, мы для всех радиокнопок указали один и тот же обработчик:
...
// Указание обработчиков для радиокнопок.
r1.addActionListener(this);
r2.addActionListener(this);
r3.addActionListener(this);
...
Этот обработчик - не что иное как метод actionPerformed:
public void actionPerformed(ActionEvent e) {
// Изменение заголовка окна в зависимости от выбранной радиокнопки.
setTitle(e.getActionCommand());
}
Этот метод из интерфейса ActionListener, для которого наш класс является потомком и который мы реализуем. Что за кнопку мы выбрали, мы определяем через метод getActionCommand для передаваемого параметра типа ActionEvent.
Запускаем программу. При выборе любой радиокнопки ее текст появится в заголовке окна: