## Cómo Utilizar la Clase Frame

La clase Frame proporciona ventanas para los applets y las aplicaciones. Cada aplicación necesita al menos un Frame (Marco). Si una aplicación tiene una ventana que debería depender de otra ventana -- desapareciendo cuando la otra ventana se minimiza, por ejemplo -- debería utilizar un Cuadro de Diálogo en vez de un Frame para la ventana dependiente. Desafortunadamente, los applets no puede utilizar cajas de diálogo por ahora, por eso utilizan Frames en su lugar.

Las páginas Cómo utilizar la Clase Menu y Cómo Utilizar la Clase Dialog son dos de las muchas de este tutorial que utilizan un Frame.

Abajo tienes el código que utiliza la demostración de Menús para crear su ventana (una subclase de Frame) y manejarla en caso de que el usuario cierre la ventana.

    public class MenuWindow extends Frame {
        boolean inAnApplet = true;
        TextArea output;

        public MenuWindow() {
            ...//Este constructor llama implícitamente al constructor sin argumentos
            //de la clase Frame y añade los componentes de la ventana
        }

        public boolean handleEvent(Event event) {
            if (event.id == Event.WINDOW_DESTROY) {
                if (inAnApplet) {
                    dispose();
                } else {
                    System.exit(0);
                }
            }
            return super.handleEvent(event);
        }

    . . .

        public static void main(String args[]) {
            MenuWindow window = new MenuWindow();
            window.inAnApplet = false;

            window.setTitle("MenuWindow Application");
            window.pack();
            window.show();
        }
    }

El método pack(), que es llamado desde el método main(), está definido por la clase Windows. Puedes ver Cómo Utilizar la Clase Dialog para más información sobre pack().

Junto con el constructor sin argumentos de Frame utilizado implícitamente por el constructor de MenuWindow, la clase Frame también proporciona un constructor con un argumento. El argumento es un String que especifica el título de la ventana del Frame.

Otros métodos interesantes proporcionados por la clase Frame son:

String getTitle() y void setTitle(String)
  Devuelven o cambian (respectivamente) el titulo de la ventana.

Image getIconImage() y void setIconImage(Image)
  Devuelven o cambian (respectivamente) la imagen mostrada cuando se minimiza la ventana.

MenuBar getMenuBar() y void setMenuBar(MenuBar)
  Devuelven o seleccionan (respectivamente) la barra de menús de ese Frame.

void remove(MenuComponent)
  Elimina la barra de menú especificada del Frame.

boolean isResizable() y void setResizable(boolean)
  Devuelven o seleccionan si el usuario puede cambiar o no el tamaño de la ventana.

int getCursorType() y void setCursor(int)
  Obtiene la imagen actual del cursor o selecciona la imagen del cursor. El cursor debe ser especificado como uno de los tipos definidos en la clase Frame. Los tipos predefinidos son :
  - Frame.DEFAULT_CURSOR,
  - Frame.CROSSHAIR_CURSOR,
  - Frame.HAND_CURSOR,
  - Frame.MOVE_CURSOR,
  - Frame.TEXT_CURSOR,
  - Frame.WAIT_CURSOR,
  - Frame.X_RESIZE_CURSOR, donde X es SW, SE, NW, NE, N, S, W, o E.

Ozito