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