Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4394257

Mouse Events (except entered/exited) have BUTTON1_MASK modifier set.

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: P3 P3
    • None
    • 1.3.0
    • client-libs
    • x86
    • linux



      Name: boT120536 Date: 12/01/2000


      java version "1.3.0beta_refresh"
      Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.0beta_refresh-b09)
      Java HotSpot(TM) Client VM (build 1.3.0beta-b07, mixed mode)


      The following code displays the mouse events that are produced:

      import java.awt.*;
      import java.awt.event.*;

      import java.util.Vector;
      import java.util.Enumeration;

      public class MouseEvents extends Frame implements MouseListener,
      MouseMotionListener {


          public static void main(String argv[]) {
              MouseEvents st = new MouseEvents();
              st.setSize(100,100);
      st.setResizable(false);
              st.show();

          }

          String name;

          public MouseEvents() {
              addMouseListener(this);
      addMouseMotionListener(this);
              
          }


          

          //---------------------------------------------
          // MouseListener

          public void mouseClicked(MouseEvent e){
              System.out.println("mouseClicked "+e);
      System.out.println("clickCount "+e.getClickCount());
      printButtons(e);
          }

          public void mousePressed(MouseEvent e) {
              System.out.println("mousePressed " + e);
      printButtons(e);
          }

          public void mouseReleased(MouseEvent e){
              System.out.println("mouseReleased "+e);
      printButtons(e);
          }

          public void mouseEntered(MouseEvent e){
              System.out.println("mouseEntered "+e);
      printButtons(e);
          }

          public void mouseExited(MouseEvent e){
              System.out.println("mouseExited "+e);
      printButtons(e);
          }

          //---------------------------------------------
          // MouseMotionListener

          public void mouseMoved(MouseEvent e) {
      System.out.println("mouseMoved "+e);
      printButtons(e);
          }

          public void mouseDragged(MouseEvent e) {
      System.out.println("mouseDragged "+e);
      printButtons(e);
          }

          private void printButtons(MouseEvent e) {
              if ((e.getModifiers() & InputEvent.BUTTON1_MASK) != 0)
                  System.out.println("Button 1");

              if ((e.getModifiers() & InputEvent.BUTTON2_MASK) != 0)
                  System.out.println("Button 2");

              if ((e.getModifiers() & InputEvent.BUTTON3_MASK) != 0)
                  System.out.println("Button 3");
          }
      }


      Example output 1 (no buttons pressed):

      mouseEntered
      java.awt.event.MouseEvent[MOUSE_ENTERED,(101,27),mods=0,clickCount=0] on frame0
      mouseMoved java.awt.event.MouseEvent[MOUSE_MOVED,(101,28),mods=16,clickCount=0]
      on frame0
      Button 1
      mouseExited java.awt.event.MouseEvent[MOUSE_EXITED,(102,28),mods=0,clickCount=0]
      on frame0


      Example output 2 (button 1 pressed):

      mouseEntered
      java.awt.event.MouseEvent[MOUSE_ENTERED,(49,19),mods=0,clickCount=0] on frame0
      mousePressed
      java.awt.event.MouseEvent[MOUSE_PRESSED,(49,19),mods=16,clickCount=1] on frame0
      Button 1
      mouseReleased
      java.awt.event.MouseEvent[MOUSE_RELEASED,(49,19),mods=16,clickCount=1] on frame0
      Button 1
      mouseClicked
      java.awt.event.MouseEvent[MOUSE_CLICKED,(49,19),mods=16,clickCount=1] on frame0
      clickCount 1
      Button 1
      mouseExited java.awt.event.MouseEvent[MOUSE_EXITED,(49,18),mods=0,clickCount=0]
      on frame0


      Example output 3 (button 3 pressed):

      mouseEntered java.awt.event.MouseEvent[MOUSE_ENTERED,(4,54),mods=0,clickCount=0]
      on frame0
      mousePressed
      java.awt.event.MouseEvent[MOUSE_PRESSED,(4,54),mods=20,clickCount=1] on frame0
      Button 1
      Button 3
      mouseReleased
      java.awt.event.MouseEvent[MOUSE_RELEASED,(4,54),mods=20,clickCount=1] on frame0
      Button 1
      Button 3
      mouseClicked
      java.awt.event.MouseEvent[MOUSE_CLICKED,(4,54),mods=20,clickCount=1] on frame0
      clickCount 1
      Button 1
      Button 3
      mouseExited java.awt.event.MouseEvent[MOUSE_EXITED,(3,54),mods=0,clickCount=0]
      on frame0



      JDK 1.3 Beta Refresh on Linux sets BUTTON1_MASK (0x16) for every mouse event
      except mouse entered and mouse exited. Pressing or releasing mouse button 1 has
      no effect on the modifiers, but does fire the correct events. If button 2 or 3
      are pressed, the modifiers indicate that both button 1 and the actually pressed
      mouse button are pressed.


      JDK 1.2.2 Linux does not display this problem. This behaviour is not observed
      on Windows using JDK 1.1.8, JDK 1.2.2 or JDK 1.3.
      (Review ID: 108707)
      ======================================================================

            prssunw Prs Prs (Inactive)
            bonealsunw Bret O'neal (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: