Lo que quiero es: Crear un evento que se dispara si el JRadioButton contenido en el Grupo de botones está seleccionado, y luego imprimir el texto que está en el JRadioButton .Escuchando en ButtonGroup para cambios "secundarios", e imprime el texto seleccionado de JRadioButton
8
A
Respuesta
11
Según mi comentario, no puede agregar un oyente a un grupo de botones. Es probable que tenga que ir con un ActionListener agregado a los JRadioButtons individuales.
Si esto no responde a tu pregunta, por favor avísanos más detalles sobre tu problema.
Editar 1
supongo que siempre podría extender ButtonGroup tal que acepta ActionListeners. Por ejemplo:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.AbstractButton;
import javax.swing.ButtonGroup;
import javax.swing.ButtonModel;
import javax.swing.event.EventListenerList;
@SuppressWarnings("serial")
public class MyButtonGroup extends ButtonGroup {
private ActionListener btnGrpListener = new BtnGrpListener();
private EventListenerList listenerList = new EventListenerList();
@Override
public void add(AbstractButton b) {
b.addActionListener(btnGrpListener);
super.add(b);
}
public void addActionListener(ActionListener listener) {
listenerList.add(ActionListener.class, listener);
}
public void removeActionListener(ActionListener listener) {
listenerList.remove(ActionListener.class, listener);
}
protected void fireActionListeners() {
Object[] listeners = listenerList.getListenerList();
String actionCommand = "";
ButtonModel model = getSelection();
if (model != null) {
actionCommand = model.getActionCommand();
}
ActionEvent ae = new ActionEvent(this, ActionEvent.ACTION_PERFORMED, actionCommand);
for (int i = listeners.length-2; i>=0; i-=2) {
if (listeners[i]== ActionListener.class) {
((ActionListener)listeners[i+1]).actionPerformed(ae);
}
}
}
private class BtnGrpListener implements ActionListener {
public void actionPerformed(ActionEvent ae) {
fireActionListeners();
}
}
}
y comprobados por el siguiente:
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class MyButtonGroupTest {
private static void createAndShowUI() {
String[] data = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday"};
JPanel panel = new JPanel(new GridLayout(0, 1));
MyButtonGroup myBtnGrp = new MyButtonGroup();
myBtnGrp.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Action Command is: " + e.getActionCommand());
}
});
for (String text : data) {
JRadioButton radioBtn = new JRadioButton(text);
radioBtn.setActionCommand(text);
myBtnGrp.add(radioBtn);
panel.add(radioBtn);
}
JFrame frame = new JFrame("MyButtonGroupTest");
frame.getContentPane().add(panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
createAndShowUI();
}
});
}
}
Pero esto todavía finalmente añade ActionListers a cada JRadioButton para lograr sus fines; simplemente hace esto detrás de escena en el reemplazo de método add de MyButtonGroup.
Cuestiones relacionadas
- 1. Cómo obtengo qué JRadioButton se selecciona de un ButtonGroup
- 2. añadiendo JRadioButton al grupo RadioButton
- 3. Escuchando cambios de Git Repo
- 4. echo "-e" no imprime nada
- 5. Reemplazar el texto seleccionado en el área de texto
- 6. jQuery establecer el texto seleccionado
- 7. Obtener el texto resaltado/seleccionado
- 8. jQuery ajustar el texto seleccionado en un área de texto
- 9. ¿Cómo busco el texto seleccionado?
- 10. reemplazar el texto seleccionado en contenteditable div
- 11. ¿Puedo añadir JRadioButton en JTable
- 12. ¿Busca un archivo de texto e imprime líneas relacionadas en Python?
- 13. Utilice Javascript para obtener el texto seleccionado en Mobile Safari
- 14. Tomar texto SELECCIONADO en UITextView
- 15. ¿Cómo obtengo el texto del nodo seleccionado actualmente en jstree?
- 16. macro de MS Outlook para tachar el texto seleccionado
- 17. Jquery para obtener el texto seleccionado de la lista desplegable
- 18. XCode para envolver texto seleccionado entre llaves "{}"
- 19. Deseleccionar texto seleccionado en JTextPane
- 20. ¿Cómo reemplazar el texto en UITextView con el rango seleccionado?
- 21. Detección de un cambio de estado de JRadioButton
- 22. HTML del texto seleccionado
- 23. Borrar texto seleccionado ComboBox
- 24. jQuery $ .removeAttr ("seleccionado") cambios seleccionados opción
- 25. Reemplazar el texto seleccionado con jquery/javascript
- 26. Automatización de UI "Texto seleccionado"
- 27. ¿Cómo cambiar el color del texto seleccionado?
- 28. Búsqueda de texto marcado (seleccionado) en Emacs
- 29. Apache e IIS uno al lado del otro (ambos escuchando el puerto 80) en windows2003
- 30. ¿Cómo obtener el texto seleccionado de edittext en android?
Consulte Editar 1. –