Son aquellos que actuan como la base fundamental o raíz para una interfaz de usuario. A diferencia de otros componentes estos contenedores pueden existir independientemente en la pantalla y no necesitan ser anidades dentro de otro componente Swing.
En esta sección encontrás una explicación resumida sobre los contenedores y algunos componentes pero,si quieres saber más, puedes ir a la sección específica de cada uno haciendo click en cada enlace
JApplet
Los applets son programas de Java que pueden ejecutarse en un navegador web compatible con Java. JApplet ha caído en desuso debido a las limitaciones de seguridad y la disminución del soporte para applets en navegadores modernos.
Para ejecutar un JApplet, necesitas un entorno que soporte applets de Java, que la mayoría de los navegadores modernos ya no ofrecen.
import javax.swing.JApplet;
import javax.swing.JLabel;
public class EjemploJApplet extends JApplet {
public void init() {
add(new JLabel("Hola, JApplet!"));
}
}
Funciona como una ventana de diálogo. Puede ser modal (bloquea la entrada a otras ventanas de la aplicación hasta que se cierre). Se utiliza conmunmente para ventanas emergentes que requieren respuesta del usuario, como confirmaciones o formularios de entrada de datos.
import javax.swing.JDialog;
import javax.swing.JLabel;
public class EjemploJDialog {
public static void main(String[] args) {
JDialog dialog = new JDialog();
dialog.setTitle("Ejemplo JDialog");
dialog.setSize(300, 200);
dialog.add(new JLabel("Hola, JDialog!"));
dialog.setVisible(true);
}
}
JFrame
Probablemente es el contenedor de nivel superior más utilizado en aplicaciones de escritorio Swing. Representa una ventana con border decorativos y controles para minimizar, maximizar y cerrar. Es el punto de partida para la mayoría de las aplicaciones de escritorio Swing, donde otros componentes Swing son agregados.
import javax.swing.JFrame;
import javax.swing.JLabel;
public class EjemploJFrame {
public static void main(String[] args) {
JFrame frame = new JFrame("Ejemplo JFrame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
frame.add(new JLabel("Hola, JFrame!"));
frame.setVisible(true);
}
}
JWindow
Es similar a JFrame pero sin bordes decorativos ni controles de ventana. Útil para ventanas emergentes y flotantes donde los controles de ventana estándar no son necesarios.
import javax.swing.JWindow;
import javax.swing.JLabel;
public class EjemploJWindow {
public static void main(String[] args) {
JWindow window = new JWindow();
window.setSize(300, 200);
window.add(new JLabel("Hola, JWindow!"));
window.setVisible(true);
}
}
Componentes intermedios
Estos componentes actúan como contenedores secundarios dentro de un contenedor de nivel superior. Se utilizan para agrupar, organizar y administrar componentes más pequeños.
JPanel
Contenedor genérico utilizado para agrupar otros componentes.
import javax.swing.*;
public class EjemploJPanel {
public static void main(String[] args) {
JFrame frame = new JFrame("Ejemplo JPanel");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
JPanel panel = new JPanel();
panel.add(new JButton("Un botón en un panel"));
frame.add(panel);
frame.setVisible(true);
}
}
JScrollPane
Proporciona barras de desplazamiento a componentes como listas o tablas
import javax.swing.*;
public class EjemploJScrollPane {
public static void main(String[] args) {
JFrame frame = new JFrame("Ejemplo JScrollPane");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
JTextArea textArea = new JTextArea(10, 30);
JScrollPane scrollPane = new JScrollPane(textArea);
frame.add(scrollPane);
frame.setVisible(true);
}
}
JSplitPane
Divide dos componentes.
import javax.swing.*;
public class EjemploJSplitPane {
public static void main(String[] args) {
JFrame frame = new JFrame("Ejemplo JSplitPane");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
new JButton("Botón Izquierdo"),
new JButton("Botón Derecho"));
frame.add(splitPane);
frame.setVisible(true);
}
}
JTabbedPane
Organiza los componentes en pestañas separadas.
import javax.swing.*;
public class EjemploJTabbedPane {
public static void main(String[] args) {
JFrame frame = new JFrame("Ejemplo JTabbedPane");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
JTabbedPane tabbedPane = new JTabbedPane();
tabbedPane.addTab("Pestaña 1", new JLabel("Contenido de la Pestaña 1"));
tabbedPane.addTab("Pestaña 2", new JLabel("Contenido de la Pestaña 2"));
frame.add(tabbedPane);
frame.setVisible(true);
}
}
JToolBar
Utilizado para crear barras de herramientas.
import javax.swing.*;
public class EjemploJToolBar {
public static void main(String[] args) {
JFrame frame = new JFrame("Ejemplo JToolBar");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
JToolBar toolBar = new JToolBar("Barra de Herramientas");
toolBar.add(new JButton("Botón 1"));
toolBar.add(new JButton("Botón 2"));
frame.add(toolBar, BorderLayout.NORTH);
frame.setVisible(true);
}
}
Componentes atómicos
Son los elementos básicos de la interfaz de usuario y no están destinados a contener otros componentes. Estos componentes interactúan directamente con el usuario.
JButton
Un botón que el usuario puede clickear.
import javax.swing.*;
public class EjemploJButton {
public static void main(String[] args) {
JFrame frame = new JFrame("Ejemplo JButton");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
JButton button = new JButton("Pulsa Aquí");
frame.add(button);
frame.setVisible(true);
}
}
JLabel
Muestra texto o imágenes.
import javax.swing.*;
public class EjemploJLabel {
public static void main(String[] args) {
JFrame frame = new JFrame("Ejemplo JLabel");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
JLabel label = new JLabel("Hola, soy una etiqueta");
frame.add(label);
frame.setVisible(true);
}
}
JTextField y JTextArea
Permiten la entrada de texto.
import javax.swing.*;
public class EjemploJTextField {
public static void main(String[] args) {
JFrame frame = new JFrame("Ejemplo JTextField");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
JTextField textField = new JTextField(20);
frame.add(textField);
frame.setVisible(true);
}
}
JCheckBox y JRadioButton
Para selecciones y opciones.
import javax.swing.*;
public class EjemploJCheckBox {
public static void main(String[] args) {
JFrame frame = new JFrame("Ejemplo JCheckBox");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
JCheckBox checkBox = new JCheckBox("Acepto los términos y condiciones");
frame.add(checkBox);
frame.setVisible(true);
}
}
JComboBox y JList
Despliegan listas de elementos para seleccionar.
import javax.swing.*;
public class EjemploJComboBox {
public static void main(String[] args) {
JFrame frame = new JFrame("Ejemplo JComboBox");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
String[] opciones = {"Opción 1", "Opción 2", "Opción 3"};
JComboBox<String> comboBox = new JComboBox<>(opciones);
frame.add(comboBox);
frame.setVisible(true);
}
}
JTable
Muestra datos en formato de tabla.
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
public class EjemploJTable {
public static void main(String[] args) {
JFrame frame = new JFrame("Ejemplo JTable");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
DefaultTableModel model = new DefaultTableModel(new Object[]{"Columna 1", "Columna 2"}, 0);
model.addRow(new Object[]{"Valor 1", "Valor 2"});
JTable table = new JTable(model);
frame.add(new JScrollPane(table));
frame.setVisible(true);
}
}
JSlider
Permite seleccionar un valor deslizando un control.
import javax.swing.*;
public class EjemploJSlider {
public static void main(String[] args) {
JFrame frame = new JFrame("Ejemplo JSlider");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
JSlider slider = new JSlider(JSlider.HORIZONTAL, 0, 100, 50);
frame.add(slider);
frame.setVisible(true);
}
}