Как получить, какой JRadioButton выбран из ButtonGroup

У меня есть приложение поворота, которое включает в себя кнопки-переключатели на форме. Однако у меня есть ButtonGroup , но, глядя на доступные методы, я не могу получить имя выбранного JRadioButton . Вот что я могу сказать до сих пор:

Есть ли более простой способ узнать, какая кнопка была выбрана? Я программирую это в Java 1.3.1 и Swing.

Я бы просто JRadioButtons и вызвал isSelected() . Если вы действительно хотите перейти от ButtonGroup вы можете перейти только к моделям. Вы можете сопоставить модели с кнопками, но если у вас есть доступ к кнопкам, почему бы не использовать их напрямую?

Я получил аналогичную проблему и решил с этим:

 import java.util.Enumeration; import javax.swing.AbstractButton; import javax.swing.ButtonGroup; public class GroupButtonUtils { public String getSelectedButtonText(ButtonGroup buttonGroup) { for (Enumeration buttons = buttonGroup.getElements(); buttons.hasMoreElements();) { AbstractButton button = buttons.nextElement(); if (button.isSelected()) { return button.getText(); } } return null; } } 

Он возвращает текст выбранной кнопки.

Вы должны добавить setActionCommand в JRadioButton затем просто выполните:

 String entree = entreeGroup.getSelection().getActionCommand(); 

Пример:

 java = new JRadioButton("Java"); java.setActionCommand("Java"); c = new JRadioButton("C/C++"); c.setActionCommand("c"); System.out.println("Selected Radio Button: " + buttonGroup.getSelection().getActionCommand()); 

Я предлагаю перейти прямо к модельному подходу в Swing. После того, как вы поместили компонент в панель и менеджер компоновки, даже не беспокойтесь, сохраняя конкретную ссылку на него.

Если вам действительно нужен виджет, вы можете протестировать каждый с помощью isSelected или сохранить Map .

Вы можете поставить и actionCommand на каждый переключатель (строка).

 this.jButton1.setActionCommand("dog"); this.jButton2.setActionCommand("cat"); this.jButton3.setActionCommand("bird"); 

Предполагая, что они уже находятся в ButtonGroup (state_group в этом случае), вы можете получить выбранную радиокнопку следующим образом:

 String selection = this.state_group.getSelection().getActionCommand(); 

Надеюсь это поможет

Следующий код показывает, какой JRadiobutton выбран из Buttongroup одним нажатием кнопки.
Это делается путем прокрутки всех JRadioButtons в определенной кнопочной группе.

  JRadioButton firstRadioButton=new JRadioButton("Female",true); JRadioButton secondRadioButton=new JRadioButton("Male"); //Create a radio button group using ButtonGroup ButtonGroup btngroup=new ButtonGroup(); btngroup.add(firstRadioButton); btngroup.add(secondRadioButton); //Create a button with text ( What i select ) JButton button=new JButton("What i select"); //Add action listener to created button button.addActionListener(this); //Get selected JRadioButton from ButtonGroup public void actionPerformed(ActionEvent event) { if(event.getSource()==button) { Enumeration allRadioButton=btngroup.getElements(); while(allRadioButton.hasMoreElements()) { JRadioButton temp=(JRadioButton)allRadioButton.nextElement(); if(temp.isSelected()) { JOptionPane.showMessageDialog(null,"You select : "+temp.getText()); } } } } в  JRadioButton firstRadioButton=new JRadioButton("Female",true); JRadioButton secondRadioButton=new JRadioButton("Male"); //Create a radio button group using ButtonGroup ButtonGroup btngroup=new ButtonGroup(); btngroup.add(firstRadioButton); btngroup.add(secondRadioButton); //Create a button with text ( What i select ) JButton button=new JButton("What i select"); //Add action listener to created button button.addActionListener(this); //Get selected JRadioButton from ButtonGroup public void actionPerformed(ActionEvent event) { if(event.getSource()==button) { Enumeration allRadioButton=btngroup.getElements(); while(allRadioButton.hasMoreElements()) { JRadioButton temp=(JRadioButton)allRadioButton.nextElement(); if(temp.isSelected()) { JOptionPane.showMessageDialog(null,"You select : "+temp.getText()); } } } } 

Вы можете использовать getSelectedObjects () ItemSelectable (суперинтерфейс ButtonModel), который возвращает список выбранных элементов. В случае группы переключателей это может быть только одно или вообще нет.

Добавьте радиокнопки в группу кнопок, затем:

buttonGroup.getSelection (). getActionCommand

 import javax.swing.Action; import javax.swing.ButtonGroup; import javax.swing.Icon; import javax.swing.JRadioButton; import javax.swing.JToggleButton; public class RadioButton extends JRadioButton { public class RadioButtonModel extends JToggleButton.ToggleButtonModel { public Object[] getSelectedObjects() { if ( isSelected() ) { return new Object[] { RadioButton.this }; } else { return new Object[0]; } } public RadioButton getButton() { return RadioButton.this; } } public RadioButton() { super(); setModel(new RadioButtonModel()); } public RadioButton(Action action) { super(action); setModel(new RadioButtonModel()); } public RadioButton(Icon icon) { super(icon); setModel(new RadioButtonModel()); } public RadioButton(String text) { super(text); setModel(new RadioButtonModel()); } public RadioButton(Icon icon, boolean selected) { super(icon, selected); setModel(new RadioButtonModel()); } public RadioButton(String text, boolean selected) { super(text, selected); setModel(new RadioButtonModel()); } public RadioButton(String text, Icon icon) { super(text, icon); setModel(new RadioButtonModel()); } public RadioButton(String text, Icon icon, boolean selected) { super(text, icon, selected); setModel(new RadioButtonModel()); } public static void main(String[] args) { RadioButton b1 = new RadioButton("A"); RadioButton b2 = new RadioButton("B"); ButtonGroup group = new ButtonGroup(); group.add(b1); group.add(b2); b2.setSelected(true); RadioButtonModel model = (RadioButtonModel)group.getSelection(); System.out.println(model.getButton().getText()); } } 

Используйте метод isSelected() . Он расскажет вам о состоянии вашего радиобата. Используя его в сочетании с циклом (например, для цикла), вы можете найти, какой из них выбран.

 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class MyJRadioButton extends JFrame implements ActionListener { JRadioButton rb1,rb2; //components ButtonGroup bg; MyJRadioButton() { setLayout(new FlowLayout()); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); rb1=new JRadioButton("male"); rb2=new JRadioButton("female"); //add radio button to button group bg=new ButtonGroup(); bg.add(rb1); bg.add(rb2); //add radio buttons to frame,not button group add(rb1); add(rb2); //add action listener to JRadioButton, not ButtonGroup rb1.addActionListener(this); rb2.addActionListener(this); pack(); setVisible(true); } public static void main(String[] args) { new MyJRadioButton(); //calling constructor } @Override public void actionPerformed(ActionEvent e) { System.out.println(((JRadioButton) e.getSource()).getActionCommand()); } 

}

 jRadioOne = new javax.swing.JRadioButton(); jRadioTwo = new javax.swing.JRadioButton(); jRadioThree = new javax.swing.JRadioButton(); 

… затем для каждой кнопки:

 buttonGroup1.add(jRadioOne); jRadioOne.setText("One"); jRadioOne.setActionCommand(ONE); jRadioOne.addActionListener(radioButtonActionListener); 

… слушатель

 ActionListener radioButtonActionListener = new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { radioButtonActionPerformed(evt); } }; 

… делать все, что вам нужно, в ответ на событие

 protected void radioButtonActionPerformed(ActionEvent evt) { System.out.println(evt.getActionCommand()); } 
  • Отправка сообщений между двумя объектами JPanel
  • Как переместить мой JMenuBar в панель меню экрана в Mac OS X?
  • Внутренняя прокладка для JTextArea с фоновой картиной
  • Как нарисовать дерево, представляющее график подключенных узлов?
  • Как установить приоритетный приемник мыши
  • как перетаскивать файлы из каталога в java
  • java keylistener не вызван
  • Добавление изображения в Jbutton с ярлыком переднего плана
  • Как заполнить JComboBox с помощью ArrayList?
  • Ограничение количества символов в JTextField
  • JButton ActionListener - обновление GUI только после нажатия JButton
  • Давайте будем гением компьютера.