Qui bouton de la souris est celui du milieu?

Je suis actuellement à l'élaboration d'un programme en Java où un certain événement doit être déclenché uniquement lorsque l'utilisateur clique avec la gauche et la droite, cliquez sur un bouton.

Car il est un peu conventionnelle, j'ai décidé de commencer le test. Ici, il 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 (" ");
}
}
});
}
}

Je l'ai testé et il fonctionne, mais il y a un problème.

Comme vous pouvez le voir, le bouton gauche de la souris est représenté par MouseEvent.BUTTON1 et le bouton droit de la souris par MouseEvent.BUTTON3.

Si l'utilisateur a une souris qui n'ont pas de molette de défilement (apparemment, ces souris existent encore), seuls deux boutons sont en MouseEvent. Est-ce à dire que le bouton de droite sera représenté par MouseEvent.BUTTON2 au lieu de MouseEvent.BUTTON3? Si oui, comment puis-je modifier mon code pour accueillir ce? Est il possible que je peux détecter quelque chose comme cela?

J'ai lu tout ce que je pouvais trouver sur l'interface MouseListener et sur MouseEvent, mais je ne pouvais pas trouver quelque chose à ce sujet.

  • ce ne serait pas un problème si j'étais le seul utilisateur... mais je vais publier mon programme en ligne pour beaucoup de gens vont probablement utiliser (ou au moins essayer).
  • Correct, j'étais juste plaisanter:)
  • Il y a 3 bouton de la souris sans molette de défilement.
  • Et la souris avec molette de défilement avec seulement 2 boutons.
InformationsquelleAutor Radu Murzea | 2012-01-23