title: Which mouse button is the middle one?
body: <p>I'm currently developing a program in Java where a certain event must be triggered only when the user clicks with both the left and the right click on a button.</p>
  
  <p>Since it is a little unconventional, I decided to first test this. Here it is:</p>
  
  <pre><code>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 (" ");
                  }
              }
          });
      }
  }
  </code></pre>
  
  <p>I tested it and it works, but there is a problem.</p>
  
  <p>As you can see, the left mouse button is represented by <code>MouseEvent.BUTTON1</code> and the right mouse button by <code>MouseEvent.BUTTON3</code>.</p>
  
  <p>If the user has a mouse which doesn't have a scroll wheel (apparently such mice still exist), then only two buttons are set in MouseEvent. Does that mean that the right button will be represented by <code>MouseEvent.BUTTON2</code> instead of <code>MouseEvent.BUTTON3</code>? If yes, how can I change my code to accomodate this? Is there any way I can detect something like this?</p>
  
  <p>I read anything I could find on the MouseListener interface and on MouseEvent, but I couldn't find something about this.</p>