java - texto - Cómo obtengo qué JRadioButton se selecciona de un ButtonGroup
radio button java eclipse (12)
Agregue los botones de radio a un grupo de botones y luego:
buttonGroup.getSelection (). getActionCommand
Tengo una aplicación de swing que incluye botones de opción en un formulario. Tengo el ButtonGroup
, sin embargo, mirando los métodos disponibles, parece que no puedo obtener el nombre del JRadioButton
seleccionado. Esto es lo que puedo decir hasta ahora:
Desde ButtonGroup, puedo realizar un
getSelection()
para devolver elButtonModel
. A partir de ahí, puedo realizar ungetActionCommand
, pero eso no parece funcionar siempre. Intenté diferentes pruebas y obtuve resultados impredecibles.También desde
ButtonGroup
, puedo obtener una enumeración degetElements()
. Sin embargo, entonces tendría que pasar por cada botón solo para verificar y ver si es el seleccionado.
¿Hay alguna manera más fácil de averiguar qué botón se ha seleccionado? Estoy programando esto en Java 1.3.1 y Swing.
Debe agregar setActionCommand
al JRadioButton
luego solo hacer:
String entree = entreeGroup.getSelection().getActionCommand();
Ejemplo:
java = new JRadioButton("Java");
java.setActionCommand("Java");
c = new JRadioButton("C/C++");
c.setActionCommand("c");
System.out.println("Selected Radio Button: " +
buttonGroup.getSelection().getActionCommand());
El siguiente código muestra qué JRadiobutton se selecciona de Buttongroup al hacer clic en un botón.
Se realiza al recorrer todos los JRadioButtons en un grupo de botones en particular.
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<AbstractButton> allRadioButton=btngroup.getElements();
while(allRadioButton.hasMoreElements())
{
JRadioButton temp=(JRadioButton)allRadioButton.nextElement();
if(temp.isSelected())
{
JOptionPane.showMessageDialog(null,"You select : "+temp.getText());
}
}
}
}
Puede poner y activar la acción de cada botón de radio (cadena).
this.jButton1.setActionCommand("dog");
this.jButton2.setActionCommand("cat");
this.jButton3.setActionCommand("bird");
Suponiendo que ya están en un grupo de botones (state_group en este caso), puede obtener el botón de opción seleccionado de esta manera:
String selection = this.state_group.getSelection().getActionCommand();
Espero que esto ayude
Puede usar getSelectedObjects () de ItemSelectable (superinterfaz de ButtonModel) que devuelve la lista de elementos seleccionados. En el caso de un grupo de botones de radio, solo puede ser uno o ninguno.
Simplemente JRadioButtons
sus JRadioButtons
y llamo isSelected()
. Si realmente quieres ir desde ButtonGroup
, solo puedes acceder a los modelos. Podría hacer coincidir los modelos con los botones, pero luego, si tiene acceso a los botones, ¿por qué no usarlos directamente?
Sugiero ir directamente al enfoque de modelo en Swing. Después de colocar el componente en el panel y el administrador de disposición, no se moleste en mantener una referencia específica al mismo.
Si realmente desea el widget, puede probar cada uno con isSelected
o mantener un Map<ButtonModel,JRadioButton>
.
Tengo un problema similar y lo resuelvo con esto:
import java.util.Enumeration;
import javax.swing.AbstractButton;
import javax.swing.ButtonGroup;
public class GroupButtonUtils {
public String getSelectedButtonText(ButtonGroup buttonGroup) {
for (Enumeration<AbstractButton> buttons = buttonGroup.getElements(); buttons.hasMoreElements();) {
AbstractButton button = buttons.nextElement();
if (button.isSelected()) {
return button.getText();
}
}
return null;
}
}
Devuelve el texto del botón seleccionado.
Use el método isSelected()
. Le dirá el estado de su radioButton. Utilizándolo en combinación con un bucle (digamos for loop) puede encontrar cuál ha sido seleccionado.
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());
}
}
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());
}
}
jRadioOne = new javax.swing.JRadioButton();
jRadioTwo = new javax.swing.JRadioButton();
jRadioThree = new javax.swing.JRadioButton();
... luego para cada botón:
buttonGroup1.add(jRadioOne);
jRadioOne.setText("One");
jRadioOne.setActionCommand(ONE);
jRadioOne.addActionListener(radioButtonActionListener);
...oyente
ActionListener radioButtonActionListener = new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
radioButtonActionPerformed(evt);
}
};
... haz lo que necesites como respuesta al evento
protected void radioButtonActionPerformed(ActionEvent evt) {
System.out.println(evt.getActionCommand());
}