34. Mi primera ventana

Empezaremos creando nuestra primera ventana vacia exactamente como las ventanas de Windows.

 

JFrame

Lo primero que tenemos que saber, es que para crear una ventana, debemos heredar del objeto JFrame, que es el que nos creara la ventana, luego debemos importar sus paquetes de Swing. El codigo quedaria de la siguiente forma:

 

import javax.swing.JFrame;

public class Ventana extends JFrame{

    public static void main(String[]args){

 

    }

}

 

Una vez heredado de JFrame e importado su paquete, escribiremos en nuestra clase un constructor que definira el titulo de nuestra ventana, el tamaño y la haremos visible. Luego en nuestro main, crearemos una instancia de la clase para ejecutar nuestra ventana.

El codigo quedaria asi:

 

import javax.swing.JFrame;

public class Ventana extends JFrame{

    

    public Ventana(){

        setTitle("Mi primera ventana");

        setBounds(10,10,300,200);

        setVisible(true);

    }

    public static void main(String[]args){

        Ventana v = new Ventana();

    }

}

 

Si ejecutas el codigo, veras tu primera ventana estilo Windows creada.

Hemos agregado un constructor y en su interior le hemos puesto lo siguiente:

setTitle("Mi primera ventana");    // Con esto ponemos un titulo a la ventana

setBounds(10,10,300,200);    // Es la posicion x=10 y=10 y las dimensiones weigth=300 height=200 de la ventana

setVisible(true);    // Significa que la ventana quedara visible

 

Bien, hay otra forma mas correcta para crear las ventanas y seria de la siguiente forma:

 

import javax.swing.JFrame;

public class Ventana extends JFrame{

    

    public Ventana(){

        this("Mi primera ventana",10,10,300,200);

    }

 

    public Ventana(String titulo, int x, int y, int w, int h){

        super(titulo);

        setBounds(x,y,w,h);

        setVisible(true);

    }

    public static void main(String[]args){

        Ventana v = new Ventana();

    }

}

 

Esta seria una forma mas correcta de crear las ventanas, si ejecutas el codigo, veras que obtienes el mismo resultado.

Si te fijas, cuando pulsas la X para cerrar la ventana, en realidad esta deja de ser visible, pero no se cierra en realidad, si divisas en la consola, veras que la ventana sigue ejecutandose. Esto es una ocupacion de memoria y lo podemos solucionar simplemente añadiendo dentro del segundo constructor lo siguiente:

 

this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);

 

Con esto, cada vez que pulsemos la X de la ventana, se cerrara por completo la aplicacion.

El codigo quedaria asi:

 

import javax.swing.JFrame;

public class Ventana extends JFrame{

    

    public Ventana(){

        this("Mi primera ventana",10,10,300,200);

    }

 

    public Ventana(String titulo, int x, int y, int w, int h){

        super(titulo);

        this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);

        setBounds(x,y,w,h);

        setVisible(true);

    }

    public static void main(String[]args){

        Ventana v = new Ventana();

    }

}

 

En el siguiente tema, veremos como agregar componentes a nuestra ventana.