La información se presenta al usuario a través de marcos o ventanas. La clase JFrame, nos permite crear el marco o ventana principal.
Toda ventana va a contener componentes, que se encargarán de mostrar información, solicitar información, o provocar eventos que desencadenarán ejecución de métodos o funciones.
Veamos un ejemplo de JFrame (ventana) donde hemos añadido una JLabel con sus respectivos atributos (etiqueta).
En primer lugar hemos creado una clase personalizada para nuestro código que heredará de JFrame. Todos los objetos que creemos de tipo MiVentana serán un JFrame con las características que indicamos para nuestra ventana particular.
import javax.swing.*;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class MiVentana extends JFrame {
public MiVentana() {
setTitle("Mi ventana");
setSize(500, 300);
setResizable(false);
setLayout(null);
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
getContentPane().setBackground(new Color(200,250,55));
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
int respuesta = JOptionPane.showConfirmDialog(
MiVentana.this,
"¿Desea cerrar la ventana?",
"Confirmar cierre",
JOptionPane.YES_NO_OPTION
);
if (respuesta == JOptionPane.YES_OPTION) {
dispose();
}
}
});
}
}A nuestra ventana, le hemos dotado de los siguientes atributos:
setTitle(«Mi ventana») En primer lugar le hemos dado un título.
setSize(500, 300) Después le hemos dado un tamaño en píxeles de ancho por alto.
setResizable(false) A continuación hemos decidido que el usuario no va a poder redimensionar la ventana. Por defecto este valor es true y el usuario puede modificar el tamaño.
setLayout(null) También indicamos que el sistema de posicionamiento de sus componentes va a ser el de coordenadas (x, y, ancho, alto).
setDefaultCloseOperation (JFrame.DO_NOTHING_ON_CLOSE) Hemos establecido que cuando se pulse el aspa (X) de la ventana, esta no se cierre automáticamente. Esto obligará a indicar un WindowListener que se encargará de indicar al programa qué debe de hacer cuando el aspa sea pulsado. En este caso hemos querido que aparezca un JOptionPane que interrogue al usario sobre si realmente quiere cerrar la ventana. En este caso, si se selecciona «yes» la ventana se destruye (mediante el método dispose ( ) ). Si es la ventana última ventana activa (en este código es la única), finaliza la ejecución del programa. Otros valores que puede tener setDefaultCloseOperation son:
JFrame.HIDE_ON_CLOSE. Es el valor por defecto. Oculta la ventana pero el programa sigue activo hasta finalizarlo de alguna otra forma.- JFrame.DISPOSE_ON_CLOSE. El efecto es el mismo que el método dispose ( ) indicado anteriormente.
- JFrame.EXIT_ON_CLOSE Destruye la ventana y el programa finaliza, aunque existan otras ventanas activas.
- getContentPane().setBackground(new Color(200,250,55)) Con este método le damos un color de fondo a la ventana. Este color de fondo viene determinado por el código RGB que indicamos entre paréntesis. También podemos darlo un color de fondo directamente nombrando un color, por ejemplo:
getContentPane().setBackground(Color.BLUE);
A continuación hemos creado la clase principal que contiene el main y desde la cual hemos llamado a la ventana:
import javax.swing.*;
import java.awt.*;
public class Pruebas {
public static void main(String[] args) {
MiVentana ventana_nueva=new MiVentana();
ventana_nueva.setVisible(true);
JLabel etiqueta = new JLabel("Soy una etiqueta.");
etiqueta.setFont(new Font("Arial", Font.BOLD, 24));
etiqueta.setBackground(Color.RED);
etiqueta.setForeground(new Color(191,246,225));
etiqueta.setOpaque(true);
etiqueta.setBounds(45, 82, 320, 60);
ventana_nueva.add(etiqueta);
}
}MiVentana ventana_nueva=new MiVentana(); En primer lugar creamos una instancia de nuestra clase propia ventana.
ventana_nueva.setVisible(true); Le damos el atributo de visible. Por defecto este atributo está en false.
A continuación creamos el componente JLabel (etiqueta), le damos atributos a esta etiqueta y la añadimos con el método .add
ventana_nueva.add(etiqueta);

Después de pulsar el aspa aparecerá:

