Mouse-motion events notify when the user uses the mouse (or a similar input device) to move the onscreen cursor. For information on listening for other kinds of mouse events, such as clicks, see How to Write a Mouse Listener. For information on listening for mouse-wheel events, see How to Write a Mouse Wheel Listener.
If an application requires the detection of both mouse events and mouse-motion events, use the MouseInputAdapter
class, which implements the MouseInputListener
a convenient interface that implements both the MouseListener
and MouseMotionListener
interfaces.
Alternatively, use the corresponding MouseAdapter
AWT class, which implements the MouseMotionListener
interface, to create a MouseMotionEvent
and override the methods for the specific events.
The following demo code contains a mouse-motion listener. This demo is exactly the same as the demo described in the How to Write a Mouse Listener section, except for substituting the MouseMotionListener
interface for the MouseListener
interface. Additionally, MouseMotionEventDemo implements the mouseDragged
and mouseMoved
methods instead of the mouse listener methods, and displays coordinates instead of numbers of clicks.
You can find the demo's code in MouseMotionEventDemo.java
and BlankArea.java
. The following code snippet from MouseMotionEventDemo
implements the mouse-motion event handling:
public class MouseMotionEventDemo extends JPanel implements MouseMotionListener { //...in initialization code: //Register for mouse events on blankArea and panel. blankArea.addMouseMotionListener(this); addMouseMotionListener(this); ... } public void mouseMoved(MouseEvent e) { saySomething("Mouse moved", e); } public void mouseDragged(MouseEvent e) { saySomething("Mouse dragged", e); } void saySomething(String eventDescription, MouseEvent e) { textArea.append(eventDescription + " (" + e.getX() + "," + e.getY() + ")" + " detected on " + e.getComponent().getClass().getName() + newline); } }
The SelectionDemo example, draws a rectangle illustrating the user's current dragging. To draw the rectangle, the application must implement an event handler for three kinds of mouse events: mouse presses, mouse drags, and mouse releases. To be informed of all these events, the handler must implement both the MouseListener
and MouseMotionListener
interfaces, and be registered as both a mouse listener and a mouse-motion listener. To avoid having to define empty methods, the handler doesn't implement either listener interface directly. Instead, it extends MouseInputAdapter
, as the following code snippet shows.
...//where initialization occurs: MyListener myListener = new MyListener(); addMouseListener(myListener); addMouseMotionListener(myListener); ... private class MyListener extends MouseInputAdapter { public void mousePressed(MouseEvent e) { int x = e.getX(); int y = e.getY(); currentRect = new Rectangle(x, y, 0, 0); updateDrawableRect(getWidth(), getHeight()); repaint(); } public void mouseDragged(MouseEvent e) { updateSize(e); } public void mouseReleased(MouseEvent e) { updateSize(e); } void updateSize(MouseEvent e) { int x = e.getX(); int y = e.getY(); currentRect.setSize(x - currentRect.x, y - currentRect.y); updateDrawableRect(getWidth(), getHeight()); Rectangle totalRepaint = rectToDraw.union(previouseRectDrawn); repaint(totalRepaint.x, totalRepaint.y, totalRepaint.width, totalRepaint.height); } }The Mouse-Motion Listener API
The MouseMotionListener Interface
The corresponding adapter classes are MouseMotionAdapter
and MouseAdapter
.
Each mouse-motion event method has a single parameter â and it's not called MouseMotionEvent
! Instead, each mouse-motion event method uses a MouseEvent
argument. See The MouseEvent API for information about using MouseEvent
objects.
The following table lists the examples that use mouse-motion listeners.
Example Where Described NotesMouseMotionEventDemo
This section Reports all mouse motion events that occur within a blank panel to demonstrate the circumstances under which mouse motion events are fired. LayeredPaneDemo
and
LayeredPaneDemo2
How to Use Layered Panes Moves an image of Duke around within a layered pane in response to mouse motion events. SelectionDemo
Lets the user drag a rectangle to select a portion of an image. Uses a subclass of MouseInputAdapter
to listen to both mouse events and mouse-motion events. GlassPaneDemo
How to Use Root Panes Uses a subclass of MouseInputAdapter
to listen to mouse events and mouse-motion events on the root pane's glass pane. Redispatches the events to underlying components. ScrollDemo
How to Use Scroll Panes The label subclass, ScrollablePicture, uses a mouse-motion listener to allow the user to scroll the picture even when the user drags the cursor outside the window.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4