Anda di halaman 1dari 5

Marcos

Un marco es un tipo de ventana que posee un borde y un ttulo, representando el tipo normal o estndar de ventana. Los marcos son gestionados a travs de la clase Frame, la cual desciende directamente de la clase Window:
java.lang.Object java.awt.Component java.awt.Container java.awt.Window java.awt.Frame

La clase Frame posee dos constructores:


public Frame ( ) public Frame (String title)

Ambos constructores crean un marco de ventana inicialmente no visible. La diferencia entre ambos es que el segundo constructor permite especificar el ttulo de la ventana. La disposicin por defecto es de tipo BorderLayout. Para gestionar los ttulos del marco de ventana existen dos mtodos:
public void setTitle (String title) public String getTitle ( )

El primer mtodo permite establecer el ttulo del marco, mientras que el segundo mtodo retorna el ttulo de dicho marco. Los marcos de ventana pueden tener un icono o imagen que los representa cuando el marco se minimiza. Para establecer este icono se utiliza el mtodo setIconImage, cuya sintaxis es la siguiente:
public void setIconImage (Image image)

El mtodo que realiza todo lo contrario es getIconImage:


public Image getIconImage ( )

Este mtodo retorna un objeto de tipo Image, el cual contiene el icono del marco. Los marcos de ventana pueden tener barras de men, los cuales contienen opciones que el usuario puede seleccionar con el fin de ejecutar algn proceso. Para aadir una barra de men a un marco se utiliza el mtodo setMenuBar, cuya sintaxis es la siguiente:
public void setMenuBar (MenuBar mb)

Y para obtener la barra de mens se utiliza el mtodo getMenuBar cuya declaracin es la que sigue:

public MenuBar getMenuBar ( )

Si se desea eliminar un determinado men del marco de ventana, se puede utilizar el mtodo remove, cuya sintaxis es la que sigue:
public void remove (MenuComponent m)

Las barras de mens y los componentes relacionados sern tratados posteriormente en esta gua de AWT. Los marcos de ventana, por defecto, se pueden ser redimensionados por el usuario mediante el uso del ratn. Para controlar este comportamiento se utilizan dos mtodos:
public void setResizable (boolean resizable) public boolean isResizable ( )

El mtodo setResizable establece si el marco de ventana es redimensionable por el usuario o no. Si se le pasa el valor true, entonces el usuario podr redimensionar el marco, mientras que si se le pasa el valor false, el usuario no podr redimensionar el marco. El mtodo isResizable, sin embargo, retorna el estado de redimensin. Es decir, que retornar true si el marco de ventana puede ser redimensionado por el usuario, o false en caso contrario. Asimismo, los marcos de ventana poseen dos estados: normal e iconificados. El estado normal se presenta cuando el marco de ventana est visible y su tamao es el normal para visualizar su contenido. El estado iconificado es, sin embargo, cuando el marco de ventana es minimizado, mostrando un icono en su lugar. Para gestionar los estados de un marco de ventana se utilizan dos mtodos:
public void setState (int State) public int getState ( )

El mtodo setState establece el estado del marco de ventana, utilizando para ello como argumento una de las siguientes constantes:
Frame.NORMAL Frame.ICONIFIED

El mtodo getState retorna el valor de las constantes anteriores, que indican el estado actual del marco de ventana. La forma de trabajar con los marcos de ventana (y con los dilogos) es distinto a lo visto hasta ahora con los applets. Ahora los applets no intervienen, pues las ventanas son un nivel superior de contenedor y no necesitan de una pgina web para poder ejecutarse. En su lugar, deben crearse nuevas clases que extiendan la clase Frame (clases que se basen y se especialicen en marcos de ventana) y que implementen un mtodo main para poder ejecutarse. El mtodo main (principal) es el mtodo por donde comienza a ejecutarse una clase en Java.

Para el ejemplo propuesto se visualizar un marco de ventana con un tamao determinado y que el usuario no puede redimensionar. En su interior aparecern tres botones en la parte superior y un rea de texto en la parte central. El primer botn visualizar un saludo en el rea de texto, el segundo lo borrar y el tercero cerrar el marco de la ventana y, por consiguiente, la ejecucin de la aplicacin. El aspecto del marco es el siguiente:

El cdigo necesario es el que sigue:


/*********************************************************/ /* Autor: Rafael Hernamperez Martin */ /* Fecha: 28-05-2000 */ /* Obj : Demostracion de marcos de ventana */ /*********************************************************/ import java.awt.*; import java.awt.event.*; public class EjemploAWT21 extends { private Button btnSaludo = new private Button btnBorrar = new private Button btnSalir = new private TextArea txaArea = new Frame Button ("Saludo"); Button ("Borrar"); Button ("Salir"); TextArea ();

// CONSTRUCTOR public EjemploAWT21 () { // Agregar eventos del boton btnSaludo.addActionListener (new OyenteBotones ()); btnBorrar.addActionListener (new OyenteBotones ()); btnSalir.addActionListener (new OyenteBotones ()); // Panel superior Panel panSuperior = new Panel (); panSuperior.setBackground (Color.blue); panSuperior.add (btnSaludo); panSuperior.add (btnBorrar); panSuperior.add (btnSalir); add (panSuperior, "North"); // Parte Central txaArea.setEditable (false); add (txaArea);

// Agregar evento de ventana addWindowListener (new WindowAdapter () { public void windowClosing (WindowEvent evt) { hide ( ); dispose ( ); System.exit (0); } }); // Propiedades del marco setTitle ("Ejemplo de Marcos"); setSize (400, 200); setResizable (false); setVisible (true); show ( ); } // GESTOR DE EVENTOS DE BOTON public class OyenteBotones implements ActionListener { public void actionPerformed (ActionEvent evt) { if (btnSaludo.equals (evt.getSource ())) txaArea.setText ("HOLA, AMIGO"); if (btnBorrar.equals (evt.getSource ())) txaArea.setText (""); if (btnSalir.equals (evt.getSource ())) { hide ( ); dispose ( ); System.exit (0); } } } // FUNCION MAIN public static void main (String args []) { EjemploAWT21 ejemplo = new EjemploAWT21 ( ); } } // Fin de la clase EjemploAWT21

Para compilar este ejemplo se procede como hasta ahora:


javac EjemploAWT21.java

Para ejecutar la aplicacin, sin embargo, se utiliza el comando siguiente:


java EjemploAWT21

Como puede apreciarse, la clase EjemploAWT21 extiende la clase Frame, es decir, que hereda el comportamiento y las caractersticas de dicha clase. Por consiguiente, la clase EjemploAWT21 ser un marco de ventana.

Es posible generar objetos de tipo Frame como si fueran un botn o una caja de texto, pero los marcos de ventana son ms complejos, puesto que se le han de aadir paneles, componentes y eventos que interacten con el usuario. Por ello, es mejor crear una clase que extienda a Frame y a partir de ah definir todos sus atributos y comportamientos. En esta clase, la ejecucin comienza por el mtodo main, que lo que hace es crear el objeto ejemplo, el cual es del tipo de la clase, utilizando para ello el constructor asignado.
// FUNCION MAIN public static void main (String args []) { EjemploAWT21 ejemplo = new EjemploAWT21 ( ); }

En el constructor se comienza por agregar oyentes de accin para los tres botones, que delegarn la accin en el mtodo OyenteBotones, que se encargar de gestionar el comportamiento de cada botn. A continuacin, se crea un panel en donde se agregan los tres botones. Este panel se aadir a la zona norte del marco de ventana. El paso siguiente es agregar el rea de texto a la parte central del marco de ventana. Lo siguiente es agregar un oyente de ventana al marco (WindowListener) en donde, mediante una clase annima se agrega un adaptador de eventos de ventana (WindowAdapter), en donde se sobreescribe el mtodo windowClosing, el cual se ejecutar cuando el usuario cierre la ventana. Este mtodo se encarga de ocultar el marco de ventana en primer lugar, de liberar los recursos del marco y de sus componentes y de salir de la aplicacin. Por ltimo, se establecen las propiedades del marco de ventana, tales como establecer el ttulo, el tamao y mostrarlo.

Anda mungkin juga menyukai