This is a simple demonstration of listening to mouse events on a panel.
We have given the online demo example of the application
You can test the application online if your browser supports java.
The browser will run this example as applet.
This displays two panels to show how the mouse listener depends on the component.
There are two panels in this example. You should be able to see these two panels in the example below.
Here is the demo of the application
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
// File: mousedeme/MouseTest.java
// Description: Main program/applet to demo mouse listeners.
// Author: Fred Swartz
// Date: 2005-02-03, 2000-11-29...2002-11-21
// Possible enhancements: Show other mouse events.
package mousedemo;
import javax.swing.*;
//////////////////////////////////////////////////////// class MouseTest
public class MouseTest extends JApplet{
//===================================================== constructor
public MouseTest() {
add(new DualMousePanel());
}
//====================================================== method main
public static void main(String[] args) {
JFrame window = new JFrame("Mouse Demo");
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setContentPane(new DualMousePanel());
window.pack();
window.setVisible(true);
}
}
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
// File: mousedeme/MousePanel.java
// Description: Panel holding two MousePanels.
// Author: Fred Swartz
// Date: 2005-02-03, 2000-11-29...2002-11-21
package mousedemo;
import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;
////////////////////////////////////////////////// class DualMousePanel
class DualMousePanel extends JPanel {
//====================================================== constructor
public DualMousePanel() {
//--- Create two MousePanels
MousePanel mp1 = new MousePanel();
MousePanel mp2 = new MousePanel();
//--- Add borders (note: borders are inside panel)
Border etched = BorderFactory.createEtchedBorder();
mp1.setBorder(BorderFactory.createTitledBorder(etched, "Panel 1"));
mp2.setBorder(BorderFactory.createTitledBorder(etched, "Panel 2"));
//--- Layout the panels
this.setLayout(new GridLayout(1, 2));
this.add(mp1);
this.add(mp2);
}//end constructor
}
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
// File: mousedeme/MousePanel.java
// Description: Panel that listens to mouse events and displays info
// about some of them.
// Author: Fred Swartz
// Date: 2005-02-03, 2000-11-29...2002-11-21
package mousedemo;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/////////////////////////////////////////////////////// class MousePanel
class MousePanel extends JPanel implements MouseListener, MouseMotionListener {
//================================================ instance variables
private int m_lastClickedX = 0; // x coord of mouse click
private int m_lastClickedY = 0; // y coord of mouse click
private int m_lastMovedX = 0; // x coord of mouse move
private int m_lastMovedY = 0; // y coord of mouse move
//====================================================== constructor
public MousePanel() {
this.setBackground(Color.white);
this.setPreferredSize(new Dimension(200, 200));
//--- Add the mouse listeners.
this.addMouseListener(this); // listen to mouse events
this.addMouseMotionListener(this); // listen to moves and drags
}
//============================================ method paintComponent
public void paintComponent(Graphics g) {
super.paintComponent(g); // paint background and borders
g.drawString("Last click: x=" + m_lastClickedX
+ ", y=" + m_lastClickedY , 10, 30);
g.drawString("x=" + m_lastMovedX + ", y=" + m_lastMovedY
, m_lastMovedX, m_lastMovedY);
}
//============================================ listener mouseClicked
public void mouseClicked(MouseEvent e) {
m_lastClickedX = e.getX(); // Save the x coordinate of the click
m_lastClickedY = e.getY(); // Save the y coordinate of the click
this.repaint(); // Paint the panel with the new values.
}
//============================================== listener mouseMoved
public void mouseMoved(MouseEvent e) {
m_lastMovedX = e.getX();
m_lastMovedY = e.getY();
this.repaint();
}
//========================================================== ignored
//==== the other motion events must be here, but do nothing.
public void mouseDragged (MouseEvent e) {} // ignore
//==== these "slow" mouse events are ignored.
public void mouseEntered (MouseEvent e) {} // ignore
public void mouseExited (MouseEvent e) {} // ignore
public void mousePressed (MouseEvent e) {} // ignore
public void mouseReleased(MouseEvent e) {} // ignore
}
|