Implementación de JRadioButton y JFrame en Java para el Cálculo de Sueldo Líquido
Código de Ejemplo: Interfaz Gráfica con JRadioButton en Java Swing
El siguiente programa implementa una interfaz gráfica utilizando la biblioteca javax.swing y java.awt para capturar datos de un empleado, seleccionar opciones previsionales y de salud mediante JRadioButton agrupados en ButtonGroup, y gestionar acciones básicas con botones de control.
Estructura del Código Fuente
package ejemploradiobutton;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class radio extends JFrame {
// Declaración de componentes de la interfaz
private JLabel lbl1, lbl2;
private JTextField txtNombre;
private JTextField txtSueldo;
private JRadioButton rbtAfp1, rbtAfp2, rbtAfp3, rbtIsapre1, rbtIsapre2, rbtFonasa;
private ButtonGroup grp1, grp2;
private JButton btnCalcular, btnCancelar, btnSalir;
private JPanel pnl1, pnl2, pnl3;
public radio() {
super("Calcular Sueldo Liquido");
// Inicialización de etiquetas y campos de texto
lbl1 = new JLabel("Ingrese Nombre");
lbl2 = new JLabel("Ingrese Sueldo Bruto");
txtNombre = new JTextField(20);
txtSueldo = new JTextField(10);
// Inicialización de botones de opción (JRadioButton)
rbtAfp1 = new JRadioButton("Afp1", false);
rbtAfp2 = new JRadioButton("Afp2", false);
rbtAfp3 = new JRadioButton("Afp3", false);
rbtIsapre1 = new JRadioButton("Isapre1", false);
rbtIsapre2 = new JRadioButton("Isapre2", false);
rbtFonasa = new JRadioButton("Fonasa", false);
// Creación de grupos para selección mutuamente excluyente
grp1 = new ButtonGroup();
grp2 = new ButtonGroup();
// Botones de acción
btnCalcular = new JButton("Calcular Sueldo Liquido");
btnCancelar = new JButton("Cancelar");
btnSalir = new JButton("Salir");
// Paneles contenedores
pnl1 = new JPanel();
pnl2 = new JPanel();
pnl3 = new JPanel();
// Agrupar los JRadioButton en sus respectivos ButtonGroup
grp1.add(rbtAfp1);
grp1.add(rbtAfp2);
grp1.add(rbtAfp3);
grp2.add(rbtIsapre1);
grp2.add(rbtIsapre2);
grp2.add(rbtFonasa);
// Configuración del panel 1 (Datos del trabajador)
pnl1.setLayout(new GridLayout(2, 2));
pnl1.add(lbl1);
pnl1.add(txtNombre);
pnl1.add(lbl2);
pnl1.add(txtSueldo);
// Configuración del panel 2 (Opciones de previsión y salud)
pnl2.setLayout(new GridLayout(3, 2));
pnl2.add(rbtAfp1);
pnl2.add(rbtIsapre1);
pnl2.add(rbtAfp2);
pnl2.add(rbtIsapre2);
pnl2.add(rbtAfp3);
pnl2.add(rbtFonasa);
// Configuración del panel 3 (Botones de interacción)
pnl3.setLayout(new FlowLayout());
pnl3.add(btnCalcular);
pnl3.add(btnCancelar);
pnl3.add(btnSalir);
// Diseño principal de la ventana (GridLayout de 3 filas, 1 columna)
setLayout(new GridLayout(3, 1));
add(pnl1);
add(pnl2);
add(pnl3);
// Asignación de manejadores de eventos
btnCalcular.addActionListener(new ejemradio());
btnSalir.addActionListener(new ejemradio());
btnCancelar.addActionListener(new ejemradio());
// Ajustes finales del marco (JFrame)
setSize(500, 450);
setVisible(true);
}
public static void main(String[] args) {
radio x = new radio();
x.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
// Clase interna para el control de eventos
private class ejemradio implements ActionListener {
public void actionPerformed(ActionEvent n) {
// Salir de la aplicación
if (btnSalir == n.getSource()) {
System.exit(0);
}
// Cancelar y limpiar formulario
if (btnCancelar == n.getSource()) {
txtNombre.setText("");
txtNombre.requestFocus();
txtSueldo.setText("");
grp1.clearSelection();
grp2.clearSelection();
}
}
}
}Elementos Principales del Documento
- JFrame: Actúa como el contenedor principal de la interfaz de usuario.
- JRadioButton y ButtonGroup: Permiten la selección exclusiva dentro de cada grupo (uno para el fondo previsional AFP y otro para el sistema de salud Isapre / Fonasa).
- GridLayout y FlowLayout: Administradores de esquema usados para distribuir los campos, etiquetas y botones de manera ordenada en distintos JPanel.
- ActionListener: Interfaz encargada de capturar los eventos generados al presionar los botones Cancelar y Salir.