Saltearse al contenido

JFrame y JPanel en Swing

JFrame y JPanel

JFrame

JFrame es una ventana de nivel superior en una aplicación Swing. Proporciona el marco principal donde se colocan otros componentes de la interfaz de usuario.

Se utiliza como el contenedor principal de una aplicación de escritorio. JFrame incluye la barra de título, bordes y botones de minimizar, maximizar y cerrar.

Uso

  1. Se crea una instancia de JFrame.
  2. Se configura su tamaño, título y operación de cierre.
  3. Se añaden otros componentes a su contenido.
  4. Se hace visible.

Ejemplo:

1
import javax.swing.*;
2
3
public class EjemploJFrame {
4
private JFrame frame;
5
6
public EjemploJFrame() {
7
inicializarComponentes();
8
}
9
10
private void inicializarComponentes() {
11
// Crear y configurar el JFrame
12
frame = new JFrame("Mi Primera Aplicación");
13
frame.setSize(400, 300);
14
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
15
16
// Añadir un componente simple
17
JLabel etiqueta = new JLabel("Bienvenido a Swing", SwingConstants.CENTER);
18
frame.add(etiqueta);
19
}
20
21
public void mostrar() {
22
frame.setVisible(true);
23
}
24
25
public static void main(String[] args) {
26
SwingUtilities.invokeLater(() -> {
27
EjemploJFrame app = new EjemploJFrame();
28
app.mostrar();
29
});
30
}
31
}

Información:

  • Creamos un JFrame con el título “Mi Primera Aplicación”.
  • Configuramos su tamaño a 400x300 píxeles.
  • Establecemos la operación de cierre para terminar la aplicación cuando se cierra la ventana.
  • Añadimos una etiqueta simple al centro del frame.
  • Finalmente, hacemos visible el frame en el método mostrar().

JPanel

JPanel es un contenedor ligero que se utiliza para organizar y agrupar otros componentes.

Se usa para dividir la interfaz de usuario en secciones lógicas, aplicar diferentes layouts a grupos de componentes y crear diseños complejos.

Uso

  1. Se crea una instancia de JPanel.
  2. Se configura su layout si es necesario.
  3. Se añaden componentes al panel.
  4. Se añade el panel a un contenedor de nivel superior (como JFrame) o a otro panel.

Ejemplo:

1
import javax.swing.*;
2
import java.awt.*;
3
4
public class EjemploJPanel {
5
private JFrame frame;
6
7
public EjemploJPanel() {
8
inicializarComponentes();
9
}
10
11
private void inicializarComponentes() {
12
frame = new JFrame("Ejemplo JPanel");
13
frame.setSize(400, 300);
14
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
15
frame.setLayout(new BorderLayout());
16
17
// Crear y configurar paneles
18
JPanel panelSuperior = crearPanelSuperior();
19
JPanel panelCentral = crearPanelCentral();
20
JPanel panelInferior = crearPanelInferior();
21
22
// Añadir paneles al frame
23
frame.add(panelSuperior, BorderLayout.NORTH);
24
frame.add(panelCentral, BorderLayout.CENTER);
25
frame.add(panelInferior, BorderLayout.SOUTH);
26
}
27
28
private JPanel crearPanelSuperior() {
29
JPanel panel = new JPanel();
30
panel.setBackground(Color.WHITE);
31
panel.add(new JLabel("Panel Superior"));
32
return panel;
33
}
34
35
private JPanel crearPanelCentral() {
36
JPanel panel = new JPanel(new GridLayout(2, 2, 5, 5));
37
for (int i = 1; i <= 4; i++) {
38
panel.add(new JButton("Botón " + i));
39
}
40
return panel;
41
}
42
43
private JPanel crearPanelInferior() {
44
JPanel panel = new JPanel();
45
panel.setBackground(Color.LIGHT_GRAY);
46
panel.add(new JButton("Aceptar"));
47
panel.add(new JButton("Cancelar"));
48
return panel;
49
}
50
51
public void mostrar() {
52
frame.setVisible(true);
53
}
54
55
public static void main(String[] args) {
56
SwingUtilities.invokeLater(() -> {
57
EjemploJPanel app = new EjemploJPanel();
58
app.mostrar();
59
});
60
}
61
}

Información:

  • Creamos tres JPanels diferentes: superior, central e inferior.
  • Cada panel tiene su propio propósito y layout:
    • El panel superior tiene un fondo blanco y contiene una etiqueta.
    • El panel central utiliza GridLayout (se verá en el futuro) para organizar cuatro botones en una cuadrícula 2x2.
    • El panel inferior tiene un fondo gris claro y contiene dos botones.
  • Los paneles se añaden al JFrame utilizando BorderLayout (se verá en el futuro).
  • Finalmente, hacemos visible el frame en el método mostrar().