progs.biz  
Начало>Java>Основы>Урок 26
C#
VB.NET
Visual C++.NET
ASP.NET
Visual C++ 6
WinAPI
C/C++
Delphi
C++ Builder
Java
SQL
PHP
DirectX
Visual Basic 6.0
Ассемблер
Интернет
Сист. прогр-ние
Pocket PC
Обзор книг
Обзор программ

Дэвид Флэнаган Java в примерах. Справочник
Дэвид Флэнаган Java в примерах. Справочник
Заказать на Озоне



Яндекс-цитирования

Введение в Java
Урок 26. Swing: JRadioButton

Элемент управления 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.

Запускаем программу. При выборе любой радиокнопки ее текст появится в заголовке окна:

Окно с радиокнопками
Рассылки нашего сайта на Subscribe.Ru
Visual C++, MFC
C# и .NET
VB.NET
ASP.NET new!
Win API
C/C++
Delphi
Java
HTML, PHP, mySQL, WEB-дизайн
Flash MX
C++ Builder
Ассемблер
SQL Server
DirectX
Обзор книг
Обзор программ
Новости сайта progs.biz


 
 
Копирование любых материалов сайта без разрешения авторов и владельцев сайта запрещено.
© 2002-2008 сайт progs.biz
© 2002-2008 Игорь Алексеев