Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как определить текст выделенной радио-кнопки 
:(
    Опции темы
AntonSaburov
Дата 2.11.2004, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



 Вопрос: как определить текст выделенной радио-кнопки в группе

Ответ:

Есть два варианта:

1. Предлагается SUN в примерах - использовать setActionCommand/getActionCommand. Это просто строка, которую можно устанавливать равной тексту на кнопке. Пользоваться удобно, но надо об этом помнить.

2. Можно просто перебрать все элементы в группе и проверить кнопку, которая выбрана. Не очень удобно если элементов много.

Оба варианта приведены в примере (смотри public void showItem()):

Код

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


public class ButtonRad extends JFrame
{
    JRadioButton button1;
    JRadioButton button2;
    JRadioButton button3;

    ButtonGroup buttonGroup;

    public ButtonRad()
    {
        getContentPane().setLayout(new FlowLayout());

        button1 = new JRadioButton("Text 1");
        button1.setActionCommand("Action 1");
        button2 = new JRadioButton("Text 2");
        button2.setActionCommand("Action 2");
        button3 = new JRadioButton("Text 3");
        button3.setActionCommand("Action 3");

        buttonGroup = new ButtonGroup();
        buttonGroup.add(button1);
        buttonGroup.add(button2);
        buttonGroup.add(button3);

        JButton btn = new JButton("Show");

        btn.addActionListener( new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                showItem();
            }
        });

        getContentPane().add(button1);
        getContentPane().add(button2);
        getContentPane().add(button3);

        getContentPane().add(btn);

        setBounds(100,100,300,100);
    }

    public void showItem()
    {
        String action = "";
        String text = "";

        // Вот первый вариант - очень быстренько нашли
        ButtonModel bm = buttonGroup.getSelection();
        if(bm!=null)
            action = bm.getActionCommand();
        else
            return;

        // А вот второй вариант - приходится перебирать все элементы.
        for(Enumeration e=buttonGroup.getElements(); e.hasMoreElements();)
        {
            Object obj = e.nextElement();
            if(obj instanceof JRadioButton)
            {
                JRadioButton rb = (JRadioButton)obj;
                if(rb.isSelected())
                {
                    text = rb.getText();
                }
            }
        }
        JOptionPane.showMessageDialog(null, action+" & "+text);
    }

    public static void main(String[] args)
    {
        ButtonRad md = new ButtonRad();
        md.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        md.setVisible(true);
    }
}

PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0498 ]   [ Использовано запросов: 23 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.