Está en la página 1de 19

Frame

La clase Frame representa en AWT una ventana tal y como estamos acostumbrados a verlas en un entorno grfico. Los componentes bsicos como son los Checkbox, label, choise, etc. siempre deben formar parte de un contenedor(Frame) para ser visibles. Ya que se considera como el control u objeto principal de una aplicacin visual o grafica en java.

Aspectos bsicos de un frame


Para crear e inicializar una ventana AWT (Frame) vamos a seguir los siguientes pasos:
Crear la variable tipo Frame Para eso utilizaremos alguna de las constructoras de la clase, que son: Frame(): Constructora sin parmetros; crea una ventana sin ttulo Frame(String): Crea una ventana con el ttulo que se le indica Por ejemplo: Frame ventana = new Frame("Ventana de prueba");
2

Tamao y posicin iniciales


El tamao se fija con el mtodo void setSize(int, int) y la posicin con setLocation(int,int). Ambos pertenecen a la clase Component. Ejemplo: ventana.setSize(300, 100); ventana.setLocation(100,50); Hay que observar que el tamao y la posicin dependen de la configuracin de la pantalla. Para conocer el tamao en pixels de la pantalla podemos utilizar el mtodo Toolkit.getDefaultToolkit().getScreenSize();, que devuelve un objeto de tipo Dimension.
3

Por ejemplo, para que la ventana aparezca centrada y ocupe un tercio de la pantalla tanto en ancho como en alto podemos escribir:
Dimension d= Toolkit.getDefaultToolkit().getScreenSize();

// calculamos el tamao de la ventana a partir del ancho de la pantalla int ancho=d.width/3; int alto=d.height/3; ventana.setSize(ancho, alto); ventana.setLocation(d.width/2-ancho/2,d.height/2-alto/2);

Otras inicializaciones (opcional) Tambin podemos fijar los colores, el tipo de letra, el ttulo (con void setTitle(String)) o el icono que mostrar la ventana al minimizarse (con void setImage(Image)). Por ejemplo:

ventana.setBackground(new Color(20,140,10)); ventana.setForeground(Color.blue); Font fuente = new Font("Arial", Font.PLAIN, 20); ventana.setFont(fuente); ventana.setTitle("Ejemplo de ventana ");

Fijar el estilo (opcional) El mtodo setLayout(Layout) determina el estilo de la ventana, es decir cmo se distribuyen los componentes en la ventana. Por ejemplo: FlowLayout estilo = new FlowLayout(); ventana.setLayout(estilo); Todos los estilos (como FlowLayout) son subclases de la clase Layout y por eso pueden ser utilizados como argumentos del mtodo setLayout. Es un ejemplo de polimorfismo.
6

Los atributos fundamentales de la ventana

Ttulo Ejemplo de ventana Color de fondo violeta No tiene barra de men No tiene ningn Componente
7

Incorporar los componentes En este paso se aaden los componentes que se desee incluir en la ventana. Para eso se utiliza el mtodo void add(Component) heredado de la clase Container. Por ejemplo: Label etiq = new Label("Te estoy mirando..."); ventana.add(etiq); Otro ejemplo de polimorfismo: etiq es de tipo Label, pero Label hereda de Component y por eso etiq puede ser argumento del mtodo add, cuyo argumento est declarado de tipo Component.

Label
La clase Label (etiqueta) se utiliza para mostrar Strings en un componente, es decir proporcionan una forma de colocar texto esttico , para mostrar informacin que no vara, normalmente, al usuario.

Constructoras Tiene 3 constructoras: Label(): La constructora por defecto, crea una etiqueta con un String vaco.

Label(String etiq): Etiq es el String a mostrar. Label(String etiq, int alineamiento): Permite indicar si la etiqueta se mostrar en el espacio reservado para ella en el component alineada a la izquierda (constante Label.LEFT), a la derecha (Label.RIGHT) o centrada

10

Mtodos
Aparte de los mtodos heredados de Object y Component, esta clase tiene dos mtodos importantes: setText(String etiq): Para modificar el contenido de la etiqueta. String getText(): Devuelve el contenido actual de la etiqueta.

11

12

Es importante que no olvidemos incorporar los componentes bsicos a un contenedor; en otro caso no podrn ser visibles. Mostrar la ventana

Esto se hace con el mtodo setVisible heredado de Component.


ventana.setVisible(true); Un error habitual es olvidar este paso con lo que la ventana no se mostrar La utilizacin de setVisible permite "cambiar" de una ventana a otra, haciendo visible la que estaba oculta y viceversa.
13

Cerrando las ventanas


Una ventana puede recibir los siguientes tipos de eventos: WINDOW_OPENED WINDOW_CLOSING WINDOW_CLOSED WINDOW_ICONIFIED WINDOW_DEICONIFIED WINDOW_ACTIVATED WINDOW_DEACTIVATED WINDOW_GAINED_FOCUS WINDOW_LOST_FOCUS WINDOW_STATE_CHANGED

14

Para tener acceso a ellos debemos: Escribir una clase para atenderlos. Esta clase debe heredar de WindowAdapter o bien implementar el interfaz WindowListener Pasarle a la ventana un objeto de ese tipo a la ventana mediante el mtodo addWindowListener. La ventana llamar al mtodo adecuado correspondiente a cada evento. Los mtodos son: void windowActivated(WindowEvent e) void windowClosed(WindowEvent e) void windowClosing(WindowEvent e) void windowDeactivated(WindowEvent e) void windowDeiconified(WindowEvent e) void windowIconified(WindowEvent e) void windowOpened(WindowEvent e)
15

De todos ellos el que nos interesa ahora es windowClosing que se utiliza cuando el usuario trata de cerrar la ventana. Para que al pulsar se cierre realmente tendremos que incluir una llamada a System.exit(0), que fuerza el fin de la aplicacin. La clase puede ser por ejemplo: class ParaAcabar extends WindowAdapter { public void windowClosing(WindowEvent

e) {
System.exit(0); }

}
16

Y el cdigo para que la ventana utilice este mtodo:


ParaAcabar acabar = new ParaAcabar(); ventana.addWindowListener(acabar);

17

Utilizacin de la herencia

Es muy normal separar el cdigo asociado a la ventana del main, haciendo una clase aparte que se encargue de la gestin de la ventana. Entonces la aplicacin queda compuesta de dos clases: la clase Ventana, y la clase Principal que se limita a crear la ventana y a hacerla visible. La configuracin de la ventana (colores, tamao, posicin, componentes, escuchas, etc.) se har entonces en la constructora de la clase Ventana, que se definir hija de la clase Frame.

18

De esta forma la clase ventana tiene todos los mtodos de la clase Frame ms todos los que nosotros aadamos posteriormente. La clase principal queda simplemente.

19

También podría gustarte