Detectar qué botón del ratón se ha pulsado

2431 vistas

Caso general:
Cuando recibimos una acción de un botón del ratón, tenemos dos posibles soluciones para detectar el botón pulsado: la primera es usar el método getButton() y comparar el resultado con las constantes BUTTON1, BUTTON2 y BUTTON3. Esta solución no es totalmente fiable ya que ña documentación no indica cual es el botón izquierdo.

Por lo tanto, será mejor usar la clase javax.swing.SwingUtilities que gestiona mejor su funcionamiento:



java
  1. void mousePressed(MouseEvent mouseEvent) {
  2.         if ( SwingUtilities.isLeftMouseButton(mouseEvent) ) {
  3.                 /** Boton IZQUIERDO */
  4.         } else if(SwingUtilities.isMiddleMouseButton(mouseEvent) ) {
  5.                 /** Boton del MEDIO */
  6.         } else if(SwingUtilities.isRightMouseButton(mouseEvent)) {
  7.                 /** Boton DERECHO */
  8.         }
  9. }



Abrir el menú contextual:
Cuando detectamos el uso del botón derecho, podemos querer mostrar el menú contextual, pero esta implementación no es portable ya que algunos sistemas sólo tienen un botón en el ratón (Mac), otros no usan el derecho para abrir el menú contextual (linux permite configurarlo). Por ello, vamos a usar el método isPopupTrigger() y nos encargaremos de comprobarlo en el mousePressed(java.awt.event.MouseEvent) y mouseReleased(java.awt.event.MouseEvent). Hacerlo en los dos es importante para que el programa funcione en todos los sistemas.