¿Qué botón del mouse es el del medio?
Actualmente estoy desarrollando un programa en Java donde un determinado evento debe activarse solo cuando el usuario hace clic con el botón izquierdo y derecho en un botón.
Como es un poco poco convencional, decidí probar esto primero. Aquí está
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JLabel;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
public class GUI
{
private JFrame mainframe;
private JButton thebutton;
private boolean left_is_pressed;
private boolean right_is_pressed;
private JLabel notifier;
public GUI ()
{
thebutton = new JButton ("Double Press Me");
addListen ();
thebutton.setBounds (20, 20, 150, 40);
notifier = new JLabel (" ");
notifier.setBounds (20, 100, 170, 20);
mainframe = new JFrame ("Double Mouse Tester");
mainframe.setDefaultCloseOperation (JFrame.DISPOSE_ON_CLOSE);
mainframe.setResizable (false);
mainframe.setSize (400, 250);
mainframe.setLayout (null);
mainframe.add (thebutton);
mainframe.add (notifier);
mainframe.setVisible (true);
left_is_pressed = right_is_pressed = false;
}
private void addListen ()
{
thebutton.addMouseListener (new MouseListener ()
{
@Override public void mouseClicked (MouseEvent e) { }
@Override public void mouseEntered (MouseEvent e) { }
@Override public void mouseExited (MouseEvent e) { }
@Override public void mousePressed (MouseEvent e)
{
//If left button pressed
if (e.getButton () == MouseEvent.BUTTON1)
{
//Set that it is pressed
left_is_pressed = true;
if (right_is_pressed)
{
//Write that both are pressed
notifier.setText ("Both pressed");
}
}
//If right button pressed
else if (e.getButton () == MouseEvent.BUTTON3)
{
//Set that it is pressed
right_is_pressed = true;
if (left_is_pressed)
{
//Write that both are pressed
notifier.setText ("Both pressed");
}
}
}
@Override public void mouseReleased (MouseEvent e)
{
//If left button is released
if (e.getButton () == MouseEvent.BUTTON1)
{
//Set that it is not pressed
left_is_pressed = false;
//Remove notification
notifier.setText (" ");
}
//If right button is released
else if (e.getButton () == MouseEvent.BUTTON3)
{
//Set that it is not pressed
right_is_pressed = false;
//Remove notification
notifier.setText (" ");
}
}
});
}
}
Lo probé y funciona, pero hay un problema.
omo puede ver, el botón izquierdo del mouse está representado porMouseEvent.BUTTON1
y el botón derecho del mouse porMouseEvent.BUTTON3
.
Si el usuario tiene un mouse que no tiene una rueda de desplazamiento (aparentemente tales ratones todavía existen), entonces solo dos botones están configurados en MouseEvent. ¿Eso significa que el botón derecho estará representado porMouseEvent.BUTTON2
en lugar deMouseEvent.BUTTON3
? En caso afirmativo, ¿cómo puedo cambiar mi código para acomodar esto? ¿Hay alguna forma de detectar algo como esto?
Leí todo lo que pude encontrar en la interfaz MouseListener y en MouseEvent, pero no pude encontrar algo al respecto.