Usar la clase principal para crear la ventana no es la mejor forma de hacerlo, lo ideal es crear una clase especial para nuestra ventana y en la clase principal simplemente instanciarla.
Esto es similar a lo que se hizo en el ejemplo anterior (crear ventana en la clase principal), pero en lugar de que la clase principal herede de JFrame lo hará una clase secundaria, que será la clase que contenga ventana, esto es así:
class Window extends JFrame {
public Window() {
// propiedades de la ventana
}
}
public class Main {
public static void main (String args[]) {
// Aquí solo se crea el objeto de la clase
// Y se le indica que muestre la ventana
}
}
La clase "Window" es la clase en la que se programará la ventana, la clase "Main" es la clase principal donde se creará un objeto de la clase secundaria "Window", ese objeto vendrá siento la ventana en sí y solo deberá mandarse a mostrar para hacer visible la ventana cuando el programa se ejecute.
■ Código
// Se importa la librería
import javax.swing.*;
// Clase secundaria en la que se programa la ventana
class Window extends JFrame {
public Window() {
// Tamaño de la ventana
this.setSize(500, 500);
// Título de la ventana
this.setTitle("Ventana en Java");
// Posición inicial de la ventana
this.setLocationRelativeTo(null);
// Bloquea el redimensionado
this.setResizable(false);
// Indica que al cerrar la ventana se cierre el programa
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
// Clase principal
public class Main {
public static void main (String args[]) {
// Objeto de la clase Window
Window ventana = new Window();
// Se muestra la ventana
ventana.setVisible(true);
}
}
Al ejecutar el código el resultado será una ventana como esta:
■ Múltiples ventanas
Dado que la ventana se genera en la clase "Window" si la instanciamos varias veces podemos crear múltiples ventanas, tantas como queramos, esto es tan simple como crear más objetos de la misma clase:
Window ventana1 = new Window();
Window ventana2 = new Window();
Window ventana3 = new Window();
ventana1.setVisible(true);
ventana2.setVisible(true);
No hay comentarios:
Publicar un comentario