Otro control visual muy común es el JRadioButton que normalmente se muestran un conjunto de JRadioButton y permiten la selección de solo uno de ellos. Se los debe agrupar para que actúen en conjunto, es decir cuando se selecciona uno automáticamente se deben deseleccionar los otros.
Problema 1:
Confeccionar un programa que muestre 3 objetos de la clase JRadioButton que permitan configurar el ancho y alto del JFrame.

Programa:
Ver videoimport javax.swing.*; import javax.swing.event.*; public class Formulario extends JFrame implements ChangeListener{ private JRadioButton radio1,radio2,radio3; private ButtonGroup bg; public Formulario() { setLayout(null); bg=new ButtonGroup(); radio1=new JRadioButton("640*480"); radio1.setBounds(10,20,100,30); radio1.addChangeListener(this); add(radio1); bg.add(radio1); radio2=new JRadioButton("800*600"); radio2.setBounds(10,70,100,30); radio2.addChangeListener(this); add(radio2); bg.add(radio2); radio3=new JRadioButton("1024*768"); radio3.setBounds(10,120,100,30); radio3.addChangeListener(this); add(radio3); bg.add(radio3); } public void stateChanged(ChangeEvent e) { if (radio1.isSelected()) { setSize(640,480); } if (radio2.isSelected()) { setSize(800,600); } if (radio3.isSelected()) { setSize(1024,768); } } public static void main(String[] ar) { Formulario formulario1=new Formulario(); formulario1.setBounds(0,0,350,230); formulario1.setVisible(true); formulario1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
Importamos los dos paquetes donde están definidas las clases e interfaces para la captura de eventos:
import javax.swing.*; import javax.swing.event.*;
Heredamos de la clase JFrame e implementamos la interface ChangeListener para capturar el cambio de selección de objeto de tipo JRadioButton:
public class Formulario extends JFrame implements ChangeListener{
Definimos tres objetos de la clase JRadioButton y uno de tipo ButtonGroup:
private JRadioButton radio1,radio2,radio3; private ButtonGroup bg;
En el constructor creamos primero el objeto de la clase ButtonGroup:
bg=new ButtonGroup();
Creamos seguidamente el objeto de la clase JRadioButton, definimos su ubicación, llamamos al método addChangeListener para informar que objeto capturará el evento y finalmente añadimos el objeto JRadioButton al JFrame y al ButtonGroup:
radio1=new JRadioButton("640*480"); radio1.setBounds(10,20,100,30); radio1.addChangeListener(this); add(radio1); bg.add(radio1);
Exactamente hacemos lo mismo con los otros dos JRadioButton:
radio2=new JRadioButton("800*600"); radio2.setBounds(10,70,100,30); radio2.addChangeListener(this); add(radio2); bg.add(radio2); radio3=new JRadioButton("1024*768"); radio3.setBounds(10,120,100,30); radio3.addChangeListener(this); add(radio3); bg.add(radio3);
En el método stateChanged verificamos cual de los tres JRadioButton está seleccionado y procedemos a redimensionar el JFrame:
public void stateChanged(ChangeEvent e) { if (radio1.isSelected()) { setSize(640,480); } if (radio2.isSelected()) { setSize(800,600); } if (radio3.isSelected()) { setSize(1024,768); } }
Problema propuesto
- Permitir el ingreso de dos números en controles de tipo JTextField y mediante dos controles de tipo JRadioButton permitir seleccionar si queremos sumarlos o restarlos. Al presionar un botón mostrar en el título del JFrame el resultado de la operación.Ver video
import javax.swing.*; import java.awt.event.*; public class Formulario extends JFrame implements ActionListener{ private JTextField tf1,tf2; private ButtonGroup bg; private JRadioButton radio1,radio2; private JButton boton1; public Formulario() { setLayout(null); tf1=new JTextField(); tf1.setBounds(10,10,100,30); add(tf1); tf2=new JTextField(); tf2.setBounds(10,60,100,30); add(tf2); bg=new ButtonGroup(); radio1=new JRadioButton("Sumar"); radio1.setBounds(10,110,100,30); bg.add(radio1); add(radio1); radio2=new JRadioButton("Restar"); radio2.setBounds(10,140,100,30); bg.add(radio2); add(radio2); boton1=new JButton("Operar"); boton1.setBounds(10,180,100,30); boton1.addActionListener(this); add(boton1); } public void actionPerformed(ActionEvent e) { if (e.getSource()==boton1) { int v1=Integer.parseInt(tf1.getText()); int v2=Integer.parseInt(tf2.getText()); int resultado=0; if (radio1.isSelected()) { resultado=v1+v2; } if (radio2.isSelected()) { resultado=v1-v2; } setTitle(String.valueOf(resultado)); } } public static void main(String[] ar) { Formulario formulario1=new Formulario(); formulario1.setBounds(0,0,350,250); formulario1.setVisible(true); formulario1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
No hay comentarios:
Publicar un comentario