Элемент управления JRadioButton предназначен для организации выбора только одного значения из нескольких возможных. Для этого несколько элемемнтов JRadioButton объединяются в одну группу, которая работат как единое целое - если выбрать одну из радиокнопок, входящих в группу, то остальные радиокнопки из этой группы становятся невыбранными.
Вот пример кода:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
publicclass 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);
}
publicvoid actionPerformed(ActionEvent e) {
// Изменение заголовка окна в зависимости от выбранной радиокнопки.
setTitle(e.getActionCommand());
}
publicstaticvoid main(String[] args) {
// Создание главного окна.new MyFrame().setVisible(true);
}
publicvoid windowClosing(WindowEvent ev) {
System.exit(0);
}
}
Обратите внимание на следующе моменты. Во-первых, мы объявили наш класс реализующим интерфейс ActionListener:
Это мы сделали для возможности добавления обработчика нажатия на наши радиокнопки.
Во-вторых, для объединения радиокнопок в группу мы объявили переменную bg типа ButtonGroup и все радиокнопки в эту группу добавили:
...
// Добавление радиокнопок в группу.
bg.add(r1);
bg.add(r2);
bg.add(r3);
...
В-третьих, мы для всех радиокнопок указали один и тот же обработчик:
...
// Указание обработчиков для радиокнопок.
r1.addActionListener(this);
r2.addActionListener(this);
r3.addActionListener(this);
...
Этот обработчик - не что иное как метод actionPerformed:
publicvoid actionPerformed(ActionEvent e) {
// Изменение заголовка окна в зависимости от выбранной радиокнопки.
setTitle(e.getActionCommand());
}
Этот метод из интерфейса ActionListener, для которого наш класс является потомком и который мы реализуем. Что за кнопку мы выбрали, мы определяем через метод getActionCommand для передаваемого параметра типа ActionEvent.
Запускаем программу. При выборе любой радиокнопки ее текст появится в заголовке окна.
PARKING.RU. Качественный ВИРТУАЛЬНЫЙ ХОСТИНГ на платформе Windows(r): поддержка NET, многофункциональная панель управления, аренда бизнес-приложений, сертифицированные специалисты. Управляемый ВЫДЕЛЕННЫЙ ХОСТИНГ на платформе Windows(r): производительные серверы, профессиональная поддержка, аренда ПО Microsoft(r), безопасность, гарантии. http://www.parking.ru