usar usa sirve que para item ejemplo como buttons java swing radio-button

usa - Desmarcar RadioButtons en Java Swing



menu item radio button java (10)

Cuando desee deseleccionar, seleccione invisible. Para eso, agrega un tercer botón invisible al grupo de botones.

Al mostrar un grupo de JRadioButtons, inicialmente ninguno de ellos está seleccionado (a menos que usted lo haga cumplir mediante programación). Me gustaría poder volver a poner los botones en ese estado incluso después de que el usuario ya haya seleccionado uno, es decir, no se debe seleccionar ninguno de los botones.

Sin embargo, el uso de los sospechosos habituales no produce el efecto requerido: la llamada ''setSelected (false)'' en cada botón no funciona. Curiosamente, funciona cuando los botones no se colocan en un grupo de botones; lamentablemente, este último es necesario para que JRadioButtons sea mutuamente exclusivo.

Además, usar el método setSelected (ButtonModel, boolean) - de javax.swing.ButtonGroup no hace lo que quiero.

He creado un pequeño programa para demostrar el efecto: dos botones de radio y un JButton. Hacer clic en JButton debe deseleccionar los botones de radio para que la ventana se vea exactamente como lo hace cuando aparece por primera vez.

import java.awt.Container; import java.awt.GridLayout; import java.awt.event.*; import javax.swing.*; /** * This class creates two radio buttons and a JButton. Initially, none * of the radio buttons is selected. Clicking on the JButton should * always return the radio buttons into that initial state, i.e., * should disable both radio buttons. */ public class RadioTest implements ActionListener { /* create two radio buttons and a group */ private JRadioButton button1 = new JRadioButton("button1"); private JRadioButton button2 = new JRadioButton("button2"); private ButtonGroup group = new ButtonGroup(); /* clicking this button should unselect both button1 and button2 */ private JButton unselectRadio = new JButton("Unselect radio buttons."); /* In the constructor, set up the group and event listening */ public RadioTest() { /* put the radio buttons in a group so they become mutually * exclusive -- without this, unselecting actually works! */ group.add(button1); group.add(button2); /* listen to clicks on ''unselectRadio'' button */ unselectRadio.addActionListener(this); } /* called when ''unselectRadio'' is clicked */ public void actionPerformed(ActionEvent e) { /* variant1: disable both buttons directly. * ...doesn''t work */ button1.setSelected(false); button2.setSelected(false); /* variant2: disable the selection via the button group. * ...doesn''t work either */ group.setSelected(group.getSelection(), false); } /* Test: create a JFrame which displays the two radio buttons and * the unselect-button */ public static void main(String[] args) { JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); RadioTest test = new RadioTest(); Container contentPane = frame.getContentPane(); contentPane.setLayout(new GridLayout(3,1)); contentPane.add(test.button1); contentPane.add(test.button2); contentPane.add(test.unselectRadio); frame.setSize(400, 400); frame.setVisible(true); } }

¿Alguna idea a alguien? ¡Gracias!


El Javadoc de la clase ButtonGroup sí da alguna pista sobre cómo se puede lograr esto:

Del API doc de la clase ButtonGroup :
Inicialmente, todos los botones en el grupo no están seleccionados. Una vez que se selecciona cualquier botón, siempre se selecciona un botón en el grupo. No hay forma de apagar un botón programáticamente en "off" para borrar el grupo de botones. Para que parezca "ninguno seleccionado", agregue un botón de opción invisible al grupo y luego, programáticamente, seleccione ese botón para desactivar todos los botones de opción que se muestran.


En mi caso utilizo el proyecto Jgoodies para unir los componentes de la GUI al modelo de Java. El componente RadioButton está vinculado a un campo

class Model { private SomeJavaEnum field; // + getter, setter }

En tal caso, ButtonGroup.clearSelection no funciona, ya que el valor anterior aún se conserva en el modelo. La solución setField(null) fue simplemente setField(null) .


Intente agregar un tercer botón invisible al grupo de botones. Cuando desee "deseleccionar", seleccione el invisible.


No sé si esto ayudará, pero ¿has intentado utilizar el método doClick() ?

jRadioButtonYourObject.doClick();

Entrada - NINGUNA

Retorno- vacío

Tuve un problema similar e intenté todo en este hilo inútilmente. Así que eché un vistazo a todos los métodos de JRadioButton y encontré ese método de la clase padre de JRadioButton.

En mi programa, tenía dos botones de opción independientes el uno del otro y se programó para que solo se seleccionara uno.

Después de que el usuario ingresa datos y pulsa un botón, el programa borra todos los campos y áreas de texto y anula la selección del botón de opción. El doClick() hizo el trabajo de deseleccionar el botón de opción para mí; el método "realiza un" clic "".

Sé que el suyo es diferente y probablemente deba programar el método doClick () para cada botón de selección que se seleccione.

http://docs.oracle.com/javase/7/docs/api/javax/swing/AbstractButton.html

buscar doClick()



Puede usar el setselected(false) para deseleccionar el botón seleccionado anterior.


Puede usar un contador de clics:

private ButtonGroup radioGroup = new javax.swing.ButtonGroup(); private JRadioButton jRadioBtn1 = new javax.swing.JRadioButton(); private int clickCount = 0; private void jRadioBtn1Clicked(java.awt.event.MouseEvent evt) { // Remove selection on a second click if (jRadioBtn1.isSelected()) { if (++clickCount % 2 == 0) { radioGroup.clearSelection(); } } }



Utilice este enlace directo SelectButtonGroup.java clase de SelectButtonGroup.java a la source clase

import java.awt.*; import java.awt.event.ActionListener; import javax.swing.*; public class SelectUnselected extends JPanel { private static String birdString = "Bird"; private static String catString = "Cat"; private static Integer selectedIndex = -1; private static AbstractButton hiddenButton = new JRadioButton(catString); private final static AbstractButton birdButton = new JRadioButton(birdString); private final static AbstractButton catButton = new JRadioButton(catString); //Group the radio buttons. private SelectButtonGroup group = new SelectButtonGroup(); public SelectUnselected() { super(new BorderLayout()); //Create the radio buttons. hiddenButton.setVisible(false); hiddenButton.setSelected(true); group.add(birdButton); group.add(catButton); group.add(hiddenButton); ActionListener sendListener = e -> { checkSelectedRadioButten(); }; birdButton.addActionListener(sendListener); catButton.addActionListener(sendListener); hiddenButton.addActionListener(sendListener); //Put the radio buttons in a column in a panel. JPanel radioPanel = new JPanel(new GridLayout(0, 1)); radioPanel.add(birdButton); radioPanel.add(catButton); add(radioPanel, BorderLayout.LINE_START); setBorder(BorderFactory.createEmptyBorder(20,20,20,20)); } public void checkSelectedRadioButten(){ System.out.println("selectedIndex = " + selectedIndex + "/ngroup.getSelectedButton() = " + group.getSelectedIndex()); if(group.getSelectedIndex() == selectedIndex){ hiddenButton.setSelected(true); selectedIndex = -1; System.out.println("getText = " + group.getSelectedButton().getText()); }else{ selectedIndex = group.getSelectedIndex(); System.out.println("getText = " + group.getSelectedButton().getText()); } } public static void main(String[] args) { JFrame frame = new JFrame("RadioButtonDemo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JComponent newContentPane = new SelectUnselected(); frame.setContentPane(newContentPane); frame.pack(); frame.setVisible(true); } }