La línea 22 de la fi gura 11.31 registra un objeto 

MouseListener

 para el 

MarcoDetallesRaton

. El compo-

nente de escucha de eventos es un objeto de la clase 

ManejadorClicRaton

, el cual extiende a 

MouseAdapter

.

Esto nos permite declarar sólo el método 

mouseClicked

 (líneas 29 a 45). Este método primero captura las 

coordenadas en donde ocurrió el evento y las almacena en las variables locales 

xPos

 y 

yPos

 (líneas 31 y 32).  Las 

líneas 34 y 35 crean un objeto 

String

 llamado 

detalles

 que contiene el número de clics del ratón, el cual se 

devuelve mediante el método 

getClickCount

 de 

MouseEvent

 en la línea 35. Las líneas 37 a 42 utilizan los méto-

dos

isMetaDown

 e 

isAltDown

 para determinar cuál botón del ratón oprimió el usuario, y adjuntan un objeto 

String

 apropiado a 

detalles

 en cada caso. El objeto 

String

 resultante se muestra en la 

barraEstado

. La clase 

DetallesRaton

 (fi gura 11.32) contiene el método 

main

 que ejecuta la aplicación. Pruebe haciendo clic con cada 

uno de los botones de su ratón repetidas veces, para ver el incremento en la cuenta de clics.

Figura 11.33

  |  Métodos de 

InputEvent

 que ayudan a diferenciar los clics de los botones izquierdo, central 

y derecho del ratón.

Método InputEvent

Descripción

isMetaDown()

Devuelve 

true

 cuando el usuario hace clic en el botón derecho del ratón, en un ratón 

con dos o tres botones. Para simular un clic con el botón derecho del ratón en un 
ratón con un botón, el usuario puede mantener oprimida la tecla 

Meta en el teclado 

y hacer clic con el botón del ratón.

isAltDown()

Devuelve 

true

 cuando el usuario hace clic con el botón central del ratón, en un ratón 

con tres botones. Para simular un clic con el botón central del ratón en un ratón con uno 
o dos botones, el usuario puede oprimir la tecla 

Alt en el teclado y hacer clic en el único 

botón o en el botón izquierdo del ratón, respectivamente.

11.15 Subclase de 

JPanel

 para dibujar con el ratón

La sección 11.13 mostró cómo rastrear los eventos del ratón en un objeto 

JPanel

. En esta sección usaremos un 

objeto

JPanel

 como un 

área dedicada de dibujo

, en la cual el usuario puede dibujar arrastrando el ratón. Ade-

más, esta sección demuestra un componente de escucha de eventos que extiende a una clase adaptadora.

Método 

paintComponent

Los componentes ligeros de Swing que extienden a la clase 

JComponent

 (como 

JPanel

) contienen el método 

paint-

Component

, el cual se llama cuando se muestra un componente ligero de Swing. Al sobrescribir este método, puede 

especifi car cómo dibujar fi guras usando las herramientas de gráfi cos de Java. Al personalizar un objeto 

JPanel

 para 

usarlo como un área dedicada de dibujo, la subclase debe sobrescribir el método 

paintComponent

 y llamar a la ver-

sión de 

paintComponent

 de la superclase como la primera instrucción en el cuerpo del método sobrescrito, para ase-

gurar que el componente se muestre en forma correcta. La razón de ello es que las subclases de 

JComponent

 soportan 

la

transparencia

. Para mostrar un componente en forma correcta, el programa debe determinar si el componente 

es transparente. El código que determina esto en la implementación del método 

paintComponent

de la superclase 

JComponent

. Cuando un componente es transparente, 

paintComponent

 no borra su fondo cuando el programa 

muestra el componente. Cuando un componente es 

opaco

,

paintComponent

 borra el fondo del componente antes 

de mostrarlo. Si no se hace una llamada a la versión de 

paintComponent

 de la superclase, por lo general, un com-

ponente de GUI opaco no se mostrará correctamente en la interfaz de usuario. Además, si se hace una llamada a la 
versión de la superclase después de realizar las instrucciones de dibujo personalizadas, por lo general, se borran los 
resultados. La transparencia de un componente ligero de Swing puede establecerse con el método 

setOpaque

 (un 

argumento

false

 indica que el componente es transparente).

Archivo
Nuevo

Abrir...

Cerrar

Observación de apariencia visual 11.13

La mayoría de los componentes de GUI pueden ser transparentes u opacos. Si un componente de GUI de Swing es 
opaco, su fondo se borrará cuando se haga una llamada a su método 

paintComponent

. Sólo los componentes opacos 

pueden mostrar un color de fondo personalizado. Los objetos 

JPanel

 son opacos de manera predeterminada. 

11.15 Subclase 

de 

JPanel

 para dibujar con el ratón 

507

11_MAQ_CAP_11.indd507

4/19/081:26:15AM