2010-09-13 20 views
8

Estoy escribiendo una aplicación de scala usando scala swing. Puedo escuchar MouseClicked para recibir notificaciones cada vez que se hace clic en el mouse, pero ¿cómo sé qué botón se presionó. La documentación es bastante mala, así que busqué en la documentación de Java MouseEvent, que dice que la clave se puede recuperar del campo de modificadores, así que traté de generar el campo de modificadores del evento scala MouseClicked, que resultó ser un entero, 0 para el clic izquierdo, el botón del mouse 3 y el botón del mouse 4 y 256 para hacer clic con el botón derecho.Scala MouseEvent - ¿Cómo saber qué botón se presionó?

Parece que funcionará si solo necesito saber la diferencia entre el clic izquierdo y el derecho, pero ¿puedo estar seguro de que todos los modificadores funcionan de esta manera? La documentación no dice nada, y por lo que sé, los modificadores podrían verse afectados por otras cosas además de por el botón del mouse presionado. También me gustaría saber la diferencia entre el botón izquierdo y el botón 3 y 4. No creo que los usuarios esperen que hagan lo mismo que el clic izquierdo.

En la documentación de scala hay un MouseButtonEvent, ¿se puede utilizar para algo? La documentación no dice nada sobre lo que hace.

Respuesta

5

Siempre puede usar x.peer.getButton para obtener la asignación de Java (donde x es su evento Scala MouseClicked). peer casi siempre contiene un Java equivalente a la clase Scala, y lo hace en este caso.

+0

Eclipse con el complemento scala no se compilará, cuando tengo esto en mi código: e.peer.BUTTON1 por lo que he leído, debería poder acceder a campos estáticos en mi código scala. ¿Estoy haciendo algo mal, o debería obtener otro IDE? –

+1

Tienes que acceder a ellos a través de la clase, no a través de la instancia: 'if (e.peer.getButton == java.awt.event.MouseEvent.BUTTON1)', como ejemplo. –

+0

Gracias ... me había olvidado completamente de eso. –

Cuestiones relacionadas