Controles en Swing
En esta sección, exploraremos algunos de los controles más comunes en Java Swing que utilizaremos para construir interfaces gráficas interactivas. Estos controles incluyen checkboxes, radio buttons, listas desplegables y barras de progreso. A continuación, se describen estos controles y su uso.
JCheckBox
El componente JCheckBox permite a los usuarios seleccionar o deseleccionar una opción. Es útil cuando se desea ofrecer múltiples opciones independientes entre sí. Aquí hay un ejemplo de cómo crear y utilizar un JCheckBox:
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class JCheckBoxExample {
public static void main(String[] args) {
JFrame frame = new JFrame("Ejemplo de JCheckBox");
JPanel panel = new JPanel();
JCheckBox checkBox1 = new JCheckBox("Opción 1");
JCheckBox checkBox2 = new JCheckBox("Opción 2");
panel.add(checkBox1);
panel.add(checkBox2);
frame.add(panel);
frame.setSize(300, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
En este ejemplo, hemos creado dos checkboxes que los usuarios pueden seleccionar o deseleccionar.
JCheckBox también permite agregar ActionListener para manejar eventos cuando el estado del checkbox cambia. Además de ActionListener, puedes utilizar ItemListener para detectar cambios en el estado del checkbox (seleccionado o deseleccionado).JRadioButton
El componente JRadioButton permite a los usuarios seleccionar una opción de un conjunto mutuamente excluyente. Para agrupar varios JRadioButton, se utiliza la clase ButtonGroup. Aquí tienes un ejemplo de cómo crear y utilizar JRadioButton:
import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
public class JRadioButtonExample {
public static void main(String[] args) {
JFrame frame = new JFrame("Ejemplo de JRadioButton");
JPanel panel = new JPanel();
JRadioButton radioButton1 = new JRadioButton("Opción A");
JRadioButton radioButton2 = new JRadioButton("Opción B");
ButtonGroup group = new ButtonGroup();
group.add(radioButton1);
group.add(radioButton2);
panel.add(radioButton1);
panel.add(radioButton2);
frame.add(panel);
frame.setSize(300, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
En este ejemplo, hemos creado dos radio buttons que pertenecen al mismo grupo, lo que significa que solo uno de ellos puede estar seleccionado a la vez.
JComboBox
El componente JComboBox proporciona una lista desplegable de opciones de las cuales el usuario puede seleccionar una. Aquí tienes un ejemplo de cómo crear y utilizar un JComboBox:
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class JComboBoxExample {
public static void main(String[] args) {
JFrame frame = new JFrame("Ejemplo de JComboBox");
JPanel panel = new JPanel();
String[] options = {"Opción 1", "Opción 2", "Opción 3"};
JComboBox<String> comboBox = new JComboBox<>(options);
panel.add(comboBox);
frame.add(panel);
frame.setSize(300, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
En este ejemplo, hemos creado un JComboBox con tres opciones que el usuario puede seleccionar.
Si bien en el ejemplo anterior las opciones son cadenas de texto, también es posible utilizar objetos personalizados como elementos del JComboBox. Para ello, debes sobrescribir el método toString() en la clase del objeto para definir cómo se mostrará en la lista desplegable.
JProgressBar
El componente JProgressBar se utiliza para mostrar el progreso de una tarea en curso. Puede ser útil para indicar al usuario cuánto tiempo falta para completar una operación. Aquí tienes un ejemplo de cómo crear y utilizar un JProgressBar:
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
public class JProgressBarExample {
public static void main(String[] args) {
JFrame frame = new JFrame("Ejemplo de JProgressBar");
JPanel panel = new JPanel();
JProgressBar progressBar = new JProgressBar(0, 100);
progressBar.setValue(50); // Establecer el valor actual del progreso
progressBar.setStringPainted(true); // Mostrar el porcentaje
panel.add(progressBar);
frame.add(panel);
frame.setSize(300, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
En este ejemplo, hemos creado una barra de progreso que muestra un progreso del 50%. Puedes actualizar el valor de la barra de progreso dinámicamente a medida que avanza la tarea.
JToggleButton
El componente JToggleButton es un botón que puede estar en dos estados: seleccionado o no seleccionado. Es útil para representar opciones que pueden activarse o desactivarse. Aquí tienes un ejemplo de cómo crear y utilizar un JToggleButton:
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JToggleButton;
public class JToggleButtonExample {
public static void main(String[] args) {
JFrame frame = new JFrame("Ejemplo de JToggleButton");
JPanel panel = new JPanel();
JToggleButton toggleButton = new JToggleButton("Activar/Desactivar");
panel.add(toggleButton);
frame.add(panel);
frame.setSize(300, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
En este ejemplo, hemos creado un JToggleButton que los usuarios pueden activar o desactivar. Por defecto, el botón no está seleccionado así que al hacer clic en él, cambiará su estado y apariencia. Por consiguiente, puedes agregar un ActionListener para manejar eventos cuando el estado del botón cambia.
Otros elementos de control
Además de los controles mencionados anteriormente, Swing ofrece una variedad de otros elementos de control que puedes utilizar para mejorar la interactividad de tu aplicación. Algunos de estos incluyen:
JSlider: Permite a los usuarios seleccionar un valor dentro de un rango mediante un control deslizante.JSpinner: Proporciona un campo de entrada que permite a los usuarios seleccionar un valor mediante botones de incremento y decremento.JList: Muestra una lista de elementos de los cuales el usuario puede seleccionar uno o varios.JTable: Permite mostrar y editar datos en una tabla con filas y columnas.