viernes, 28 de febrero de 2014

Clase Scrollbar

Una Scrollbar es una barra de desplazamiento con IUI cursor que permite introducir y modificar valores, entre unos valores mínimo y máximo, con pequeños y glandes incrementos. Las Scrollbars de Jara se utilizan tanto como "sliders*' o bañas de desplazamiento aisladas (al estilo de Visual Basic), como unidas a una ventana en posición vertical y/u horizontal para mostrar una cantidad de información superior a la que cabe en la ventana. La clase Scrollbar tiene dos constantes. Scrollbar.HORIZONTAL y Scrollbar.VERTICAL, que indican la posición de la barra. El cambiar el valor de la Scrollbar produce un AdjustementErent. La Tabla 5.20 muestra algunos métodos de esta clase.
En el constructor general, el parámetro pos es la constante que indica la posición de la bañ a (horizontal o vertical): el rango es el intervalo entre los valores mínimo tnin y máximo tnax: el parámetro vis (de visibleAmount) es el tamaño del área visible en el caso en que las Scrollbars se utilicen en TextAreas. En ese caso, el tamaño del cursor representa la relación entre el área risible y el rango. como es habitual en Netscape. Word y tantas aplicaciones de Windows. El valor seleccionado viene dado por la variable valué. Cuando valué es igual a tnin el área visible comprende el inicio del rango; cuando valué es igual a tnax el área visble comprende el final del rango. Cuando la Scrollbar se va a utilizar aislada (como slider). se debe hacer visibleAmount igual a cero. Las variables TJnit Incretnent y Block Increment representan los incrementos pequeño y grande, respectivamente. Por defecto. Unit Incretnent es y Block Incretnent es "10", mientras que tnin es "0" y tnax es "100". Cada vez que cambia el valor de una Scrollbar se genera un evento AdjustementEvent y se ejecuta el único método de la interface AdjustmentListener. que es adjustmentValueChangedQ.

jueves, 27 de febrero de 2014

Clase List

La clase List viene definida por una zona de pantalla con varias líneas, de las que se muestran sólo algunas, y entre las que se puede hacer una selección simple o múltiple. Las List generan eventos de la clase ActionEvents (al clicar dos veces sobre un item o al pulsar return) e ItemEvents (al seleccionar o deseleccionar un item). Al gestionar el evento ItemEvent se puede preguntar si el usuario estaba pulsando a la vez alguna tecla (Alt. Ctrl. Shift). por ejemplo para hacer una selección múltiple. Las List se diferencian de las Choices en que muestran varios items a la vez y que permiten hacer selecciones múltiples. La Tabla 5.19 muestra los principales métodos de la clase List.

miércoles, 26 de febrero de 2014

Clase Label

La clase Label introduce en un container un texto no seleccionable y no editable. que por defecto se alinea por la izquierda. La clase Label define las constantes Label.CENTER. Label.LEFT y Label.RIGHT para determinar la alineación del texto. La Tabla 5.18 muestra algunos métodos de esta clase

La elección del font. de los colot es. del tamaño y posición de Label se realiza con los métodos heredados de la clase Component. setFont(Font f). setForeground(Color). setBackground(Color), setSize(int, int). setLocatión (inty int). setVisible(boolean). etc. La clase Label no tiene más eventos que los de su super-clase Component.

martes, 25 de febrero de 2014

Clase Clioice

La clase Clioice permite elegir un ítem de una lista desplegable. Los objetos Clioice ocupan menos espacio en pantalla que los Checkbox. Al elegir un item se genera un ItemEvent. Un index permite determinar un elemento de la lista (se empieza a contar desde 0). La Tabla 5.17 muestra los métodos más habimales de esta clase.
La clase Chotee genera el evento ItemEvent al seleccionar un item de la lista. En este sentido es similar a las clases Checkbox y ClieckboxGroup. así como a los menús de selección.

lunes, 24 de febrero de 2014

Clase ItemEvent

Se produce un ItemEvent cuando ciertos componentes (Checkbox. CheckboxMenuItem. Choice y List) cambian de estado (onoff). Estos componentes son los que implementan la interface ItemSelectable. La Tabla 5.16 muestra algunos métodos de esta clase.


La clase ItemEvent define las constantes enteras SELECTED y DESELECTED. que se pueden utilizar para comparar con el valor devuelto por el método getStateChangeQ.

domingo, 23 de febrero de 2014

Component Checkbox y clase ClieckboxGroup

Los objetos de la clase Checkbox son botones de opción o de selección con dos posibles valores: on y off. Al cambiar la selección de un Checkbox se produce un ItemEvent.
La clase ClieckboxGroup permite la opción de agrupar varios Checkbox de modo que uno y sólo uno esté en on (al comienzo puede que todos estén en off). Se corresponde con los botones de opción de Visual Basic. La Tabla 5.15 muestra los métodos más importantes de estas clases. 
Cuando el usuario actúa sobre mi objeto Checkbox se ejecuta el método itemStateChanged(), que es el único método de la interface ItemListener. Si hay varias checkboxes cuyos eventos se gestionan en un mismo objeto y se quiere saber cuál es la que ha recibido el evento, se puede utilizar el método getSource() del evento ErentObject. 
También se puede utilizar el método getltemf) de ItemEvent. cuyo valor de retomo es un Object que contiene el lab el del componente (para convertirlo a String habría que hacer un cast). Para crear un grupo o conjunto de botones de opción (de forma que uno y sólo uno pueda estar activado), se debe crear un objeto de la clase ClieckboxGroup. Este objeto no tiene datos: simplemente sirve como identificador del grupo. 
Cuando se crean los objetos Checkbox se pasa a los constructores el objeto ClieckboxGroup del grupo al que se quiere que pertenezcan. Cuando se selecciona un Checkbox de un grupo se producen dos eventos: uno por el elemento que se ha seleccionado y otro por haber perdido la selección el elemento que estaba seleccionado anteriormente. Al hablar de evento ItemEvent y del método itemStateChanged() se verán métodos para determinar los checkboxes que han sido seleccionados o que han perdido la selección.

sábado, 22 de febrero de 2014

Clase Canvas

Una Canvas es una zona rectangular de pantalla en la que se puede dibujar y en la que se pueden generar eventos. Las Catiras permiten realizar dibujos, mostrar imágenes y crear componentes a medida, de modo que muestren un aspecto similar en todas las plataformas. La Tabla 5.14 muestra
los métodos de la clase Cativas. Desde los objetos de la clase Catiras se puede llamar a los métodos paitit() y repaint() de la super-clase Component. Con frecuencia conviene re de finir los siguientes métodos de Compon ent: getPreferredSize(). getMinimumSize() y gerMaximumSizef). que devuelven un objeto de la clase Dimensión. El LayoutManager se encarga de utilizar estos valores. La clase Canvas no tiene eventos propios, pero puede recibir los eventos ComponentErent de su super-clase Component.

viernes, 21 de febrero de 2014

Clase ActionEvent

Los eventos ActionEvent se producen al clicar con el ratón en un botón {Button). al elegir un comando de un menú (Menultem). al hacer doble clic en un elemento de una lista (List) y al pulsar Intro para introducir un texto en una caja de texto (TextField). El método String getActionCommand() devuelve el texto asociado con la acción que provocó el evento. Este texto se puede fijar con el método setActionCommand(String str) de las clases Button y Menultem. Si el texto no se ha fijado con este método, el método getActionCommand() devuelve el texto mostrado por el componente (su etiqueta). 
Para objetos con varios items el valor devuelto es el nombre del item seleccionado. El método int getModifiers() devuelve un entero representando una constante definida en ActionEvent (SHIFT_MASK. CTRL_MASK. META_MASK y ALT_MASK). Estas constantes sirven para determinar si se pulsó una de estas teclas modificadores mientras se clicaba. Por ejemplo, si se estaba pulsando la tecla CTRL la siguiente expresión es distinta de cero:

actionEvent.getModifiers() & ActionEvent.CTRL_MASK

jueves, 20 de febrero de 2014

Clase Button

Aunque según la Tabla 5.2. en la página 91. un Button puede recibir seis tipos de eventos, lo más importante es que al clicar sobre él se genera un evento de la clase ActionErent. El aspecto de un Button depende de la plataforma (PC. Mac. Unix), pero la funcionalidad siempre es la misma. Se puede cambiar el texto y la font que aparecen en el Button. así como el foreground y backgroung color. 
También se puede establecer que esté activado o no. La Tabla 5.13 muestra los métodos más importantes de la clase Button.

miércoles, 19 de febrero de 2014

Clase Panel

Un Panel es un Container de propósito general. Se puede utilizar tal cual para contener otras componentes, y también crear una sub-clase para alguna finalidad más específica. Por defecto, el Layout Manager de Panel es FlowLayout. Los Applets son sub-clases de Panel. La Tabla 5.12 muestra los métodos más importantes que se utilizan con la clase Panel. que son algunos métodos heredados de Componet y Container. pues la clase Panel no tiene métodos propios.


Un Panel puede contener otros Panel. Esto es una gran ventaja respecto a los demás tipos de containers. que son containers de máximo nivel y no pueden introducirse en otros containers. Insets es una clase que deriva de Object. Sus variables son top. left. botton. right. Representa el espacio que se deja libre en los bordes de un Container. Se establece mediante la llamada al adecuado constructor del Layout Manager.

martes, 18 de febrero de 2014

Clase FileDialog

La clase FileDialog muestra una ventana de diálogo en la cual se puede seleccionar un fichero. Esta clase deriva de Dialog. Las constantes enteras LOAD (abrir ficheros para lectura) y SAVE (abrir ficheros para escritura) definen el modo de apertura del fichero. 
La Tabla 5.11 muestra algunos métodos de esta clase.


Las clases que implementan la interface java.io.FilenameFilter permiten filtrar los ficheros de un directorio. Para más información, ver la docomentación on-line.

lunes, 17 de febrero de 2014

Clase Dialog

Un Dialog es una ventana que depende de otra ventana (de una Frame). Si una Frame se cieña, se cierran también los Dialog que dependen de ella: si se iconifica, sus Dialog desaparecen: si se restablece, sus Dialog aparecen de nuevo. Este comportamiento se obtiene de forma automática. Las Applets estándar no soportan Dialogs porque no son Frames de Java. 
Las Applets que abren Frames sí pueden soportar Dialogs. Un Dialog modal require la atención inmediata del usuario: no se puede hacer ninguna otra cosa hasta no haber cenado el Dialog. Por defecto, los Dialogs son no modales. La Tabla 5.10 muestra los métodos más importantes de la clase Dialog. Se pueden utilizar también los métodos heredados de sus super-clases.

domingo, 16 de febrero de 2014

Clase Frame

Es una ventana con un borde y que puede tener una barra de menús. Si una ventana depende de otra ventana, es mejor utilizar una Window (ventana sin borde ni barra de menús) que un Frame. La Tabla 5.9 muestra algunos métodos más utilizados de la clase Frame.
Además de los métodos citados, se utilizan mucho los métodos show(). pack(), toFrontQ y toBack(). heredados de la super-clase Window.

sábado, 15 de febrero de 2014

Clase WindowEvent

Se produce un WindowEvent cada vez que se abre. cieñ a, iconiza. restaura, activa o desactiva una ventana. La interface WindowListener contiene los siete métodos siguientes, con los que se puede responder a este evento:

void windowOpened(WindowEvent we); // antes de mostrarla por primera vez
void windowClosing(WindowEvent we); // al recibir una solicitud de cierre
void windowClosed(WindowEvent we); // después de cerrar la ventana
void windowlconified(WindowEvent we);
void windowDeiconified(WindowEvent we);
void windowActivated(WindowEvent we);
void windowDeactivated(WindowEvent we);

El uso más frecuente de WindowEvent es para cerrar ventanas (por defecto, los objetos de la clase Frame no se pueden cenar más que con Ctrl+Alt+Supr). También se utiliza para detener threads y liberar reclusos al iconizar una ventana (que contiene por ejemplo animaciones) y comenzar de nuevo al restaurarla. La clase WindowEvent define la siguiente sene de constantes que permiten identificar el tipo de evento:

WINDOWOPENED, WINDOW CLOSING. WINDOW_CLOSED.
WINDOWJCONIFIED. WINDOW_DEICONIFIED.
WINDOWACTIVATED. WINDOWDEACTIVATED

En la clase WindowEvent el método Window getWindowQ devuelve la Window que generó el evento. Se utiliza en lugar de getSourcef).

viernes, 14 de febrero de 2014

Clase Window

Los objetos de la clase Window son ventanas de máximo nivel, pero sin bordes y sin barra de menús. En realidad son más interesantes las clases que derivan de ella: Frame y Dialog. Los métodos más útiles, por ser heredados por las clases Frame y Dialog. se muestran en la Tabla 5.8.

jueves, 13 de febrero de 2014

Clase ContainerEvent

Los ContainerEvents se generan cada vez que un Component se añade o se retira de un Container. Estos eventos sólo tienen un papel de aviso y no es necesario gestionarlos para que se realize la operación. 

Los métodos de esta clase son Component getChild(), que devuelve el Component añadido o eliminado, y Container getContainer(). que devuelve el Container que generó el evento.

miércoles, 12 de febrero de 2014

Clase Container

La clase Container es también una clase muy general. De ordinario, nunca se crea un objeto de esta clase, pero los métodos de esta clase son heredados por las clases Frame y Panel. que sí se utilizan con mucha frecuencia para crear objetos. La Tabla 5.7 muestra algunos métodos de Container. 

Los containers mantienen una lista de los objetos que se les han ido añadiendo. Cuando se añade un nuevo objeto se incorpora al final de la lista, salvo que se especifique una posición determinada. En esta clase tiene mucha importancia todo lo que tiene que ver con los Layout Managers. que se explicarán más adelante. La Tabla 5.7 muestra algunos métodos de la clase Container.

martes, 11 de febrero de 2014

Clase FocusEveiit

El Focus está relacionado con la posibilidad de sustituir al ratón por el teclado en ciertas operaciones. De los componentes que aparecen en pantalla, en un momento dado hay sólo uno que puede recibir las acciones del teclado y se dice que ese componente tiene el Focus. El componente que tiene el Focus aparece diferente de los demás (resaltado de alguna forma). Se cambia el elemento que tiene el Focus con la tecla Tab o con el ratón. Se produce un FocusEvent cada vez que un componente gana o pierde el Focus. El método requestFocusQ de la clase Component permite hacer desde el programa que un componente obtenga el Focus. 
El método boolean isTemporaryf). de la clase FocusEvent. indica si la pérdida del Focus es o no temporal (puede ser temporal por haberse ocultado o dejar de estar activa la ventana, y recuperarse al cesar esta circunstancia). 
El método Component getComponentQ es heredado de ComponentEvent. y permite conocer el componente que ha ganado o perdido el Focus. Las constantes de esta clase FOCUS GAINED y FOCUSLOSTpermiten saber el tipo de evento FocusEvent que se ha producido.

lunes, 10 de febrero de 2014

Clases IiiputEvent y MouseEvent - II

La clase MouseEvent define una serie de constantes int que permiten identificar los tipos de eventos que se han producido: MOUSE_CLICKED. MOUSE_PRESSED. MOUSE_RELEASED, MOUSE_MOVED. MOUSE_ENTERED. MOUSE_EXITED. MOUSE_DRAGGED. Además, el método Component getComponentf), heredado de ComponentEvent. devuelve el componente sobre el que se ha producido el evento. 
Los eventos MouseEvent disponen de una segunda interface para su gestión, la interface MouseMotionListener. cuyos métodos reciben también como argumento un evento de la clase MouseEvent. Estos eventos están relacionados con el movimiento del ratón. Se llama a un método de la interface MouseMotionListener cuando el usuario utiliza el ratón (o un dispositivo similar) para mover el cursor o arrastrarlo sobre la pantalla. Los métodos de la interface MouseMotionListener son mouseMovedQ y mouseDraggedf).

sábado, 8 de febrero de 2014

Clases IiiputEvent y MouseEvent - I

De la clase InputEvent descienden los eventos del ratón y el teclado. Esta clase dispone de métodos pera detectar si los botones del ratón o las teclas especiales han sido pulsadas. Estos botones y estas teclas se utilizan para cambiar o modificar el significado de las acciones del usuario. La clase InputEvent define unas constantes que permiten saber qué teclas especiales o botones del ratón estaban pulsados al producirse el evento, como son: SHIFT_MASK. ALT_MASK. C'TRL_MASK. BUTTON1 _MASK. BUTTON2_MASK y BUTTON3_MASK. cuyo significado es evidente. La Tabla 5.5 muestra algunos métodos de esta clase.
Se produce un MouseEvent cada vez que el cursor movido por el ratón entra o sale de un componente visible en la pantalla, al clicar. o cuando se pulsa o se suelta un botón del ratón. Los métodos de la interface MouseListener se relacionan con estas acciones, y son los siguientes (ver Tabla 5.3. en la página 92): mouseClickedQ, mouseEnteredQ. mouseExited(). tnousePressed() y tnouseReleased(). Todos son void y reciben como argumento un objeto MouseEvent. La Tabla 5.6 muestra algunos métodos de la clase MouseEvent.

viernes, 7 de febrero de 2014

Clase ComponentEvent

Los eventos ComponentEvent se generan cuando un Component de cualquier tipo se muestra, se oculta, o cambia de posición o de tamaño. Los eventos de mostrar u ocultar ocurren cuando se llama al método setVisible(boolean) del Component. pero no cuando se minimiza la ventana. Otro método útil de la clase ComponentEvent es Component getComponentf) que devuelve el componente que generó el evento. Se puede utilizar en lugar de getSourceQ.

jueves, 6 de febrero de 2014

Clases EventObject y AWTEvent

Todos los métodos de las interfaces Listener relacionados con el AWT tienen como argumento único un objeto de alguna clase que desciende de la clase java.awt.AWTEvent (ver Figura 5.2. en la página 89). 
La clase AWTEvent desciende de java.utilEventObject. La clase AWTEvent no define ningún método, pero hereda de EventObject el método getSourcef): Object getSource(); que devuelve una referencia al objeto que generó el evento. Las clases de eventos que descienden de A WTEvent definen métodos similares a getSource() con unos valores de retomo menos genéricos. Por ejemplo, la clase ComponentEvent define el método getComponentf), cuyo valor de retomo es un objeto de la clase Component.

miércoles, 5 de febrero de 2014

Clase Component

La clase Component es una clase abstract de la que derivan todas las clases del AWT. según el diagrama mostrado previamente en la Figura 5.1. en la página 89. Los métodos de esta clase son importantes porque son heredados por todos los componentes del AWT. La Tabla 5.4 muestra algunos de los métodos más utilizados de la clase Component. En las declaraciones de los métodos de dicha clase aparecen las clases Point. Dimensión y Rectangle. La clase java.awt.Point tiene dos variables miembro int llamadas * ey. La clase java.awt.Dimension tiene dos variables miembro int: height y width. La clase java. an t.Rectangle tiene cuatro variables int: height. width, A* e y.Las tres son sub-clases de Object. Además de los métodos mostrados en la Tabla 5.4. la clase Component tiene un gran número de métodos básicos cuya funcionalidad puede estudiarse mediante la documentación on-line de Java. Entre otras funciones, permiten controlar los colores. las fonts y los cursores. 
A continuación se describen las clases de eventos más generales, relacionados bien con la clase Component. bien con diversos tipos de componentes que también se presentan a continuación.

martes, 4 de febrero de 2014

COMPONENTES Y EVENTOS

En este Apartado se van a ver los componentes gráficos de Java, a partir de los cuales se pueden construir interfaces gráficas de usuario. Se verán también, en paralelo y lo más cerca posible en el texto, las diversas clases de eventos que pueden generar cada uno de esos componentes.
La Figura 5.3. tomada de uno de los ejemplos de Java Tu tonal de Sun. muestra algunos componentes del AWT. En ella se puede ver un menú. una superficie de dibujo o canvas en la que se puede dibujar y escribir texto, una etiqueta, una caja de texto y un área de texto, un botón de comando y un botón de selección, una lista y una caja de selección desplegable.

lunes, 3 de febrero de 2014

Clases Adapter - III

Obsérvese que el objeto event listener se crea justamente en el momento de pasárselo como argumento al método addWindon-Listener(). Se sabe que se está creando un nuevo objeto porque aparece la palabra new. Debe tenerse en cuenta que no se está creando un nuevo objeto de Win don Adapter (entre otras cosas porque dicha clase es abstract). sino extendiendo la clase Win don Adapter. aunque la palabra extends no aparezca. Esto se sabe por las llaves que se abren al final de la línea 10. Los paréntesis vacíos de la línea 10 podrían contener los argumentos para el constructor de WindonAdapter. en el caso de que dicho constructor necesitara argumentos. En la sentencia 11 se redefine el método windowClosingQ. En la línea 12 se cierran las llaves de la clase anónima, se cierra el paréntesis del método addWin dowListenerQ y se pone el punto y coma de terminación de la sentencia que empezó en la línea 10. Para más información sobre las clases anónimas ver el Apartado 3.10.4. en la página 59.

domingo, 2 de febrero de 2014

Clases Adapter - II

Las sentencias 15-17 definen una clase auxiliar (helper class) que deriva de la clase Win dowAdapter. Dicha clase hereda definiciones vacías de todos los métodos de la interface Windon'Listener. Lo único que tiene que hacer es redefinir el único método que se necesita para cerrar las ventanas. El constructor de la clase VentanaCerrable crea un objeto de la clase CerrarVentana en la sentencia 10 y lo registra como event listener en la sentencia 11. En la sentencia 11 la palabra this es opcional: si no se incluye, se supone que el event source es el objeto de la clase en la que se produce el evento, en este caso la propia ventana. 

Todavía hay otra forma de responder al evento que se produce cuando el usuario desea cerrar la ventana. Las clases anónimas de Java son especialmente útiles en este caso. En realidad, para gestionar eventos sólo hace falta un objeto que sea registrado como event listener y contenga los métodos adecuados de la interface Listener. Las clases anónimas son útiles cuando sólo se necesita un objeto de la clase, como es el caso. La nueva definición de la clase VentanaCerrable podría ser como sigue:

1.    // Fichero VentanaCerrable3.java
2 .   import j ava.awt.*;
3.    import java.awt.event.*;
4.   class VentanaCerrable3 extends Frame {
5.      // constructores
6.      public VentanaCerrable3() { super(); }
7.      public VentanaCerrable3(String title) {
3.      super(title);
9.         setSize(500,500);
10.        this.addWindowListener(new WindowAdapter() {
11.                            public void windowClosing() {System.exit(0);}
12.                         >);
13.                         }
14.
} // fin de la clase VentanaCerrable

sábado, 1 de febrero de 2014

Clases Adapter - I

Java proporciona ayudas para definir los métodos declarados en las interfaces Listener. Una de estas ayudas son las clases Adapter. que existen para cada una de las interfaces Listener que tienen más de un método. Su nombre se construye a partir del nombre de la interface, sustituyendo la palabra "Listener' por "Adapter \ Hay 7 clases Adapter. ComponentAdapter. Container Adapter. FocusAdapter. KeyAdapter. MouseAdapter. MouseMotionAdapter y WindowAdapter. 

Las clases Adapter derivan de Object. y son clases predefinidas que contienen definiciones vacías para todos los métodos de la interface. Para crear un objeto que responda al evento, en vez de crear una clase que implemente la interface Listener. basta crear una clase que derive de la clase Adapter correspondiente, y redefina sólo los métodos de interés. Por ejemplo, la clase VentanaCerrable del Apartado 1.3.9 (página 18) se podía haber definido de la siguiente forma:

I.    // Fichero VentanaCerrable2.java
2 .           import j ava.awt.*;
3.    import java.awt.event.*;
4.    class VentanaCerrable2 extends Frame {
5.       // constructores
6.       public VentanaCerrable2() { super(); }
7.       public VentanaCerrable2(String title) {
3.       super(title);
9.          setSize(500,500);
10.         CerrarVentana cv = new CerrarVentana();
II.         thi s.addWindowLi s teñer(cv);
13.   } // fin de la clase VentanaCerrable2
14.   // definición de la clase CerrarVentana
15.   class CerrarVentana extends WindowAdapter {
16.      void windowClosing(WindowEvent we) { System.exit(0); }
17.   } // fin de la clase CerrarVentana