4.2 COLOCANDO EL MARCO

 

Seguimos con el archivo que creamos en el post anterior CreandoMarcos, al ejecutar la ventana aparece en algún lugar de la pantalla, en mi caso aparece en la esquina superior izquierda:



Si no le indicamos donde queremos que aparezca la ventana se mostrará en alguna ubicación diferente dependiendo de la resolución de los monitores.

Para colocar la ventana en algún punto en concreto de la pantalla se utiliza el método setLocation con unos parámetros x e y donde se posiciona el marco. Imaginaros la gráfica siguiente:



Donde aparece la ventana por defecto en nuestro monitor en el eje de coordenadas es 0,0, si queremos que aparezca en el centro, tendríamos que poner, por ejemplo, un 500 en el parámetro x.

 

class miMarco extends JFrame {

           

            public miMarco() {

                 

                  setSize(500, 300);

                 

                  setLocation(500, 200);

            }

           

           

      }

Si ejecutamos la aplicación, en mi caso, el marco aparece casi en medio, depende también de los monitores.

 

El método setSize y el método setLocation los podemos sustituir por el método setBounds que nos permite colocar la ventana y darle un tamaño, tenemos que pasarle cuatro parámetros, las variables x e y que es la ubicación y los otros dos parámetros es el tamaño:

 

class miMarco extends JFrame {

           

            public miMarco() {

                 

                  //setSize(500, 300);

                 

                  //setLocation(500, 200);

                 

                  setBounds(500, 200, 500, 300);

            }

           

           

      }

Cuando aparece la ventana y nos colocamos sobre una esquina la podemos redimensionar, para impedir que podamos redimensionar utilizamos el método SetResizable y le pasamos un parámetro de tipo boolean como false:

class miMarco extends JFrame {

           

            public miMarco() {

                 

                  //setSize(500, 300);

                 

                  //setLocation(500, 200);

                 

                  setBounds(500, 200, 500, 300);

                 

                  setResizable(false);

            }

           

           

      }

Si queremos que nos aparezca la ventana en pantalla completa utilizamos el método setExtendedState y le pasamos una constante de clase que viene incluida en este método:

class miMarco extends JFrame {

           

            public miMarco() {

                 

                  //setSize(500, 300);

                 

                  //setLocation(500, 200);

                 

                  setBounds(500, 200, 500, 300);

                 

                  setResizable(false);

                 

                  setExtendedState(JFrame.MAXIMIZED_BOTH);

            }

           

           

      }

Es recomendable que conforme vayamos conociendo métodos los vayamos viendo en la API de Java para ver su uso. Por ejemplo, el método setExtendedState tiene varias constantes de clase, por ejemplo, para ver la ventana normal se utilizaría de la siguiente forma:

setExtendedState(JFrame.NORMAL);

Para que aparezca un título en la barra de título utilizamos el método setTitle.

class miMarco extends JFrame {

           

            public miMarco() {

                 

                  //setSize(500, 300);

                 

                  //setLocation(500, 200);

                 

                  setBounds(500, 200, 500, 300);

                 

                  //setResizable(false);

                 

                  //setExtendedState(JFrame.MAXIMIZED_BOTH);

                 

                  setTitle("Mi primer marco");

            }

           

           

      }

 

Siguiendo con el ejemplo queremos colocar la ventana justo en el centro de la pantalla, para ello hemos de conocer la resolución de la misma donde se está ejecutando la aplicación, debemos utilizar la clase Toolkit que es un almacén de multitud de método que se comunican con el sistema huésped de ventanas. Esta clase tiene dos métodos:

·         getDefaultToolkit()

·         getScreenSize()

Vamos a verlo mediante un ejemplo, creamos una nueva clase con el método main al que vamos a llamar CreandoMarcoCentrado.

package swing;

 

public class CreandoMarcoCentrado {

 

      public static void main(String[] args) {

 

      }

 

}

A continuación, nos creamos otra clase que se va a encargar de que el marco aparezca centrado, vamos a llamarla MarcoCentrado que va a heredar de la clase JFrame, dentro de esta clase creamos el constructor:

class MarcoCentrado extends JFrame {

     

      public MarcoCentrado() {

           

      }

     

}

Tenemos que detectar la resolución de nuestra pantalla y esto lo hacemos con el método getDefaultToolkit, este método nos permite saber el sistema nativo de las ventanas de la pantalla del PC. Para utilizarlo se usa un objeto de tipo Toolkit.

      public MarcoCentrado() {

           

            Toolkit mipantalla = Toolkit.getDefaultToolkit();

           

      }

Tenemos que averiguar la resolución o tamaño de la ventana, esto lo hacemos con el método getScreenSize(). Si vais a la API de Java para conocer un poco más el uso de este método, utiliza un objeto de tipo Dimension que a la misma vez es una clase. Por lo que lo crearíamos de la siguiente forma:

      public MarcoCentrado() {

           

            Toolkit mipantalla = Toolkit.getDefaultToolkit();

           

            Dimension tamanopantalla = mipantalla.getScreenSize();

           

      }

En tamanopantalla hemos almacenado la resolución de la pantalla y necesitamos obtener el ancho y alto de la pantalla, para ello necesitamos utilizar dos campos de clase pertenecientes a la clase Dimension que son width y heigth, por lo que hacemos lo siguiente:

public MarcoCentrado() {

           

            Toolkit mipantalla = Toolkit.getDefaultToolkit();

           

            Dimension tamanopantalla = mipantalla.getScreenSize();

           

            int alturapantalla = tamanopantalla.height;

           

            int anchurapantalla = tamanopantalla.width;

           

      }

Vamos a crear un marco con unas dimensiones correspondientes a la mitad de la pantalla en cuanto a ancho y la mitad en cuanto a altura.

public MarcoCentrado() {

           

            Toolkit mipantalla = Toolkit.getDefaultToolkit();

           

            Dimension tamanopantalla = mipantalla.getScreenSize();

           

            int alturapantalla = tamanopantalla.height;

           

            int anchurapantalla = tamanopantalla.width;

           

            setSize(anchurapantalla/2, alturapantalla/2);

           

            setLocation(anchurapantalla/4, alturapantalla/4);

           

      }

Utilizamos setSize para dividir tanto la anchura como la altura entre dos, por la mitad y para colocar la ventana en el centro utilizamos setLocation dividido entre cuatro.

Para probar la aplicación nos creamos un objeto de la clase MarcoCentrado en el método main:

public static void main(String[] args) {

           

            MarcoCentrado mimarco = new MarcoCentrado();

           

            mimarco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

           

            mimarco.setVisible(true);

 

      }

Si probamos vemos que la ventana nos aparece justo en medio de la pantalla.

Podemos añadir un título a la ventana con el método setTittle y añadir un icono en la ventana, por defecto, aparece un icono:



Para insertar un icono en la ventana se utiliza el método getImage. Todo esto lo hacemos dentro del constructor de la clase MarcoCentrado:

      setTitle("Mi marco centrado");

           

            Image miIcon = mipantalla.getImage("src/swing/icono.png");

           

            setIconImage(miIcon);

Probamos:



4.1 INTRODUCCIÓN A LAS APLICACIONES SWING << >> 4.3 ESCRIBIENDO EN EL FRAME



No hay comentarios:

Publicar un comentario