Utilización de RadioButton
Conocido también como botón de opción o botón de radio es un tipo de widget utilizado en interfaces gráficas de usuario que permite elegir una sola opción de un conjunto predeterminado de estas.
Los botones de opción (botones de radio) se llaman así en referencia a los botones físicos que se usan en los radios para seleccionar estaciones preajustadas - cuando se presionaba uno de los botones, otro de los botones saltaba.
Es posible que, inicialmente, ninguno de los botones de opción en un grupo esté seleccionado. Este estado no puede restaurarse interactuando con el widget del botón de opción (pero es posible a través de otros elementos de la interfaz de usuario).
Un aspecto interesante de los botones de opción, cuando se utilizan en un formulario HTML, es que si no se marca ningún botón en un grupo, entonces no se pasa ningún par nombre-valor cuando se envía el formulario. Por ejemplo, para un grupo de botones de opción llamado Sexo, con las opciones de Masculino y Femenino, la variable Sexo no pasaría, ni siquiera con un valor en blanco.
Este es un ejemplo común de un RadioButton en donde sólo se permitirá seleccionar un elemento de la lista definida previamente por el Programador:
Bueno, ahora vamos al código, veamos que se debe hacer para crear uno de estos.
Imports Utilizados:
import javax.swing.ButtonGroup;
import javax.swing.JRadioButton;
import javax.swing.JRadioButton;
Definir un RadioButton:
JRadioButton rbtn1=new JRadioButton("txt1",true);
JRadioButton rbtn2=new JRadioButton("txt2",false);
JRadioButton rbtn3=new JRadioButton("txt3",false);
Creación del Grupo de Botones:
ButtonGroup grupo1 = new ButtonGroup();
grupo1.add(rbtn1);
grupo1.add(rbtn2);
grupo1.add(rbtn3);
grupo1.add(rbtn1);
grupo1.add(rbtn2);
grupo1.add(rbtn3);
La Clase que se utiliza se llama JRadioButton y donde la clase que nos permite crear un grupo donde "almacenaremos" nuestro botones es la ButtonGroup. Los parámetros que se pasan al momento de crearlo son el Texto que llevará y si estará seleccionado este ítem al momento de ejecutar nuestro programa.
Existen otras formas tanto de colocar el texto en un RadioButton como de configurar si este estará seleccionado por defecto, tales como:
rbtn1.setText("Texto");
rbtn1.setSelected(true);
En el caso de necesitar una validación podríamos hacerlo con un IF:
if(rbtn1.isSelected()==true)
{
System.out.print("Seleccionó opción 1");
Hola. disculpe como puedo hacer para llamar otra ventana con un radiobutton
ResponderBorrarHola, con respecto a tu pregunta la validación podría ser la siguiente:
ResponderBorrarif(rbtn1.isSelected()==true)
{
Formulario f1 = new Formulario();
}
if(rbtn2.isSelected()==true)
{
Formulario2 f2 = new Formulario2();
}
Así se abrirían nuevas ventanas a partir de la selección que hayas hecho en el RadioButton.
Saludos!
como puedo hacer k al hacer click n el radio button aparesca una lista determinada en un combobox
ResponderBorrarHola Jheimy, gracias por comentar, con respecto a tu duda, podrías basarte en este pedazo de código (ojo que no está optimizado pero cumple lo que me dices):
BorrarRecuerda definir el número de JRadioButton que quieras y el JComboBox, todo lo necesario también lo detallas en el Constructor, ahora las funciones clave son estas:
public void stateChanged(ChangeEvent e)
{
//Si el JRadioButton está seleccionado, entonces lleno el JComboBox con los siguientes elementos.
if (radio1.isSelected())
{
combo1.removeAllItems();
combo1.addItem("Radio1 Seleccionado");
}
if (radio2.isSelected())
{
combo1.removeAllItems();
combo1.addItem("Radio2 Seleccionado");
}
if (radio3.isSelected())
{
combo1.removeAllItems();
combo1.addItem("Radio3 Seleccionado");
}
}
public void itemStateChanged(ItemEvent e)
{
if (e.getSource()==combo1)
{
String seleccionado=(String)combo1.getSelectedItem();
setTitle(seleccionado);
}
}
tengo un problema
ResponderBorrarcuadno ponga la desicion no me aparece el .isSelected
Hola Juan, gracias por comentar, con respecto a tu duda, te aclaro como debes definir tu JRadioButton y como es la función para tomar una decisión:
Borrarprivate JRadioButton radio1,radio2,radio3;
private ButtonGroup bg;
public FormularioRadioButton() {
setLayout(null);
bg=new ButtonGroup();
radio1=new JRadioButton("Opcion1");
radio1.setBounds(10,20,100,30);
radio1.addChangeListener(this);
add(radio1);
bg.add(radio1);
radio2=new JRadioButton("Opcion2");
radio2.setBounds(10,70,100,30);
radio2.addChangeListener(this);
add(radio2);
bg.add(radio2);
radio3=new JRadioButton("Opcion3");
radio3.setBounds(10,120,100,30);
radio3.addChangeListener(this);
add(radio3);
bg.add(radio3);
}
public void stateChanged(ChangeEvent e) {
if (radio1.isSelected()) {
//Hacer lo que tu quieras
}
if (radio2.isSelected()) {
//Hacer lo que tu quieras
}
if (radio3.isSelected()) {
//Hacer lo que tu quieras
}
}
Hola.
ResponderBorrarCómo se puede hacer para que al elegir una opción con radio button en un formulario en otro formulario me salga la opción en un cuadro de texto?
Hola Jamilet, con respecto a tu duda, te planteo el siguiente escenario con el que puedes cumplir de manera rápida lo que deseas:
BorrarVamos a pasar un dato (String) entre jFrame1 y jFrame2 en Netbeans.
Ahora dentro del JRadioButton, donde controlas las opciones seleccionadas pondrías un código similar a este:
JFrame2 son1 = new JFrame2();
son1.setVisible(true);
Y para lograr enviar la opción seleccionada al otro formulario en la caja de texto, se pondría algo así:
son1.txtRespuesta.setText(radioBtn1.getText());
Hasta ahí nada fuera de lo común, pero por el momento verás que en el IDE se te muestra un Error, es porque aún no terminamos los cambios.
Vamos al JFrame2, seleccionamos la caja de texto donde aparecerá la opción del JRadioButton seleccionada, presionamos click derecho y seleccionamos "Propiedades", aparecerá una ventana
con varias pestañas, vamos a la que diga "código" o "code", dependiendo del idioma de tu Netbeans.
Y cambiamos una de las propiedades, aquella que dice: "Variable Modifiers", modificamos el valor seleccionado que es "private" con "public", con esto ya podrás acceder desde el JFrame1 al JTextField del JFrame2 y colocar el resultado de la opción seleccionada, el código que ya lo probé es algo así:
public void stateChanged(ChangeEvent e)
{
son1.setVisible(true);
if (radio1.isSelected() && radio1.isEnabled()) {
radio1.setEnabled(false);
radio2.setEnabled(true);
radio3.setEnabled(true);
son1.lblResult.setText(radio1.getText());
}
if (radio2.isSelected() && radio2.isEnabled()) {
radio1.setEnabled(true);
radio2.setEnabled(false);
radio3.setEnabled(true);
son1.lblResult.setText(radio2.getText());
}
if (radio3.isSelected() && radio3.isEnabled()) {
radio1.setEnabled(true);
radio2.setEnabled(true);
radio3.setEnabled(false);
son1.lblResult.setText(radio3.getText());
}
Agregué algunas validaciones para que no se abra más de una instancia y controlar de mejor forma este código, es algo breve, se puede optimizar, espero que te sirva.
Saludos! =)
Hola y no sabes si se podrá, que al seleccionar un jcombobox este me cargue un jtable con diferentes encabezados
ResponderBorrarHola Jonathan, si se puede realizar lo que preguntas, es algo similar a la respuesta del penúltimo comentario, solo que en vez de mandar los datos a otro JFrame, cambias los datos del encabezado de la Tabla, puedes basarte en los ejemplos que se publicaron anteriormente, suerte!!
BorrarSaludos! =)
hola , quisiera saber , como abrir un formulario nuevo desde un radiobutton
ResponderBorrarHola, con respecto a tu pregunta puede ser así:
Borrarif(rbtn1.isSelected()==true)
{
Formulario f1 = new Formulario();
}
if(rbtn2.isSelected()==true)
{
Formulario2 f2 = new Formulario2();
}
como hago para que cuando elija uno de los radio botones me deje activos solo los botones que necesito (en una calculadora).
ResponderBorrarnecesito esto para manejar operaciones con binarios, decimal y hexa y obviamente en los tres sistemas no utilizan los mismos botones
Hola Daniel,con respecto a tu pregunta puede ser así:
Borrarif(rbtnOctal.isSelected()==true)
{
btnOperacionDecimal.setEnabled(false);
btnOperacionHexadecimal.setEnabled(false);
}
Y de esa manera haces para cada botón que uses en la calculadora.
Espero que te sirva, saludos!!
Este comentario ha sido eliminado por el autor.
BorrarPor eso mismo.....debes deshabilitar cada uno de los botones.....lo que te puse arriba es el código de ejemplo, la base con la quede debes hacer eso para todos los botones que utilices.
BorrarSaludos!
tengo esto: decimal.setSelected(true);
ResponderBorrareso solo me pone el punto en el radiobutton, pero no me deja haciendo la accion por defecto, como hago?
Haber, con esa sentencia lo que haces es que el JRadioButton de nombre "decimal" se coloque como seleccionado, pero no estás validando nada, no usas un IF, cómo deseas que el usuario controle la aplicación si tu le estás mandando esa sentencia por dentro, a menos que "decimal" sea la opción seleccionada por default, ya te explique como debes hacer tu código, acá de nuevo te explico con tu código adicional:
Borrar//Con esto indicamos que se seleccione la opción decimal en el Conjunto de JRadioButtons
decimal.setSelected(true);
//Debemos validar de alguna forma qué opción está seleccionada, eso puede hacerse a través de un simple evento o llamando a una función simple hecha por ti, como prefieras, la cual deberá tener un código similar a este:
//Si octal está seleccionado entonces deshabilitar botones para funciones decimal y hexadecimal
if(octal.isSelected()==true)
{
//Estos son botones de las operaciones de otras bases que como no están seleccionadas serán deshabilitados.
SumaDecimal.setEnabled(false);
SumaHexadecimal.setEnabled(false);
}
Saludos!
necesito que cuando haga clic en un boton me haga la grafica del seno (con plano cartesiano), pero no se como hacer la grafica y el llamado del metodo cuando haga clic, de antemano muchas gracias
BorrarHola Daniel,
BorrarCon respecto a eso, al presionar el botón debes llamar a una función que ejecute un código similar a este, cabe resaltar que es el código base para hacer una gráfica del seno.
import java.awt.*;
import java.applet.Applet;
public class Seno extends Applet {
int x0,xN,y0,yN;
double xmin,xmax,ymin,ymax;
int apAncho,apAlto;
public void init() {
Dimension d = size();
apAncho = d.width;
apAlto = d.height;
x0 = y0 = 0;
xN = apAncho-1;
yN = apAlto-1;
xmin = -10.0;
xmax = 10.0;
ymin = -1.0;
ymax = 1.0;
}
public void paint( Graphics g ) {
double x1,y1,x2,y2;
int j1,j2;
j1 = ValorY( 0 );
for( int i=0; i < apAncho; i++ )
{
j2 = ValorY( i+1 );
g.drawLine( i,j1,i+1,j2 );
j1 = j2;
}
}
private int ValorY( int valor ) {
double x,y;
int retorno;
x = (valor * (xmax-xmin) / (apAncho-1)) + xmin;
y = Math.sin( x );
retorno = (int)( (y-ymin) * (apAlto-1) / (ymax-ymin) );
retorno = apAlto - retorno;
return( retorno );
}
}
como hago para ir almacenando en una lista loq ue seleccione en las opciones de radiobotton
ResponderBorrarHola Rafa, para lo que preguntas, un código base sería este:
Borrarif(rbtn1.isSelected()==true)
{
//Crea tu lista aquí y agrega el elemento seleccionado del JRadioButton, para validar el elemento seleccionado es el IF, y para agregar a la lista deberías usar la sentencia:
radio1.getText();
}
Nota Final: Puedes usar un ArrayList y el código que usarías sería así:
ArrayList miLista = new ArrayList();
miLista.add(radio1.getText());
Saludos!!
Muchas gracias por la información, me ha ayudado bastante.
ResponderBorrarGracias Aura por comentar, me alegra que te haya servido!! =)
BorrarSaludos!
Galo primero deja agradecerte porq gracias a este blog pude realizar parte de mi proyecto
ResponderBorrarMuchas gracias Bryan, hace tiempos que no revisaba los comentarios y es bueno saber que mi blog te ayudó a realizar tu proyecto. =)
BorrarHola, tengo un proyecto en el cual al hacer clic en un Radio button me aparece información en un area de texto ¿como puedo cambiar el font al texto?
ResponderBorrarHola, que tal, para cambiar la letra es posible de la siguiente manera:
Borrarlabel = new JLabel("Hola Mundo!");
label.setFont(new Font("Calibri", Font.PLAIN, 24));
Hola muchas gracias
ResponderBorrarCon esos tics me has aclarado una duda que tenía.
Hola Lirio, gracias por comentar, me alegra que te haya sido de ayuda la explicación.
BorrarSaludos! =)
se puede crear Radio Button en tiempo de ejecucion?
ResponderBorrarreferente a q tengo q hacer una encuestador el cual puede agregar "X" pregunta y despues agregar sus respuestas q puede ser desde 2 hasta 100 por ejemplo pero tiene que utilizar radio button...
Hola coxx06, si se puede, tienes que hacerlo con condicionales y puedes usar un arreglo de Radio Buttons también, hay muchas formas de resolver eso, espero que te sirva.
BorrarSuerte!! =)
Hola buenas, como hago para que no me deje vacía la fila de la tabla? al momento que ejecuto la aplicación si no se selecciono nada me manda el mensaje que debo seleccionar una opción, pero sigue de largo y me deja en blanco la fila de la tabla.
ResponderBorrarString Sexo ="";
if(rbmasculino.isSelected()){
Sexo= "Masculino";
}
if(rbfemenino.isSelected()){
Sexo= "Femenino";
}
else{
JOptionPane.showMessageDialog(rootPane, "Debe seleccionar una opcion para el sexo");
}
Hola Jhonny, con respecto a tu pregunta, te pido que por favor subas más detalles de tu código, si es posible un enlace a Github con tu repositorio o una imagen para entender a qué tabla te refieres, aunque lo más probable que deberías hacer en una situación así es validar que si el String Sexo es diferente de "Masculino" y diferente de "Femenino", que no le deje pasar al programa y no se ejecuten las sentencias siguientes, espero que te sirva, es todo lo que puedo decir con esa poca información.
BorrarSaludos!! =)