This class processes additional Mouse status information - like mouse clicks and which button was pressed.
MouseDetails.java// MouseDetails.java
// Demonstrating mouse clicks and
// distinguishing between mouse buttons.
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class MouseDetailsPanel extends JPanel {
public JLabel statusBar;
private String s = "";
private int xPos, yPos;
boolean first;
public MouseDetailsPanel()
{
statusBar = new JLabel("Status");
//add( statusBar, BorderLayout.SOUTH );
first = true;
addMouseListener( new MouseClickHandler() );
}
public void paintComponent( Graphics g )
{
super.paintComponent(g);
if (!first) g.drawString( "Clicked @ [" + xPos + ", " + yPos + "]",
xPos, yPos );
first = false;
}
// inner class to handle mouse events
private class MouseClickHandler extends MouseAdapter {
public void mouseClicked( MouseEvent e )
{
xPos = e.getX();
yPos = e.getY();
String s =
"Clicked " + e.getClickCount() + " time(s)";
if ( e.isMetaDown() ) // Right mouse button
s += " with right mouse button";
else if ( e.isAltDown() ) // Middle mouse button
s += " with center mouse button";
else // Left mouse button
s += " with left mouse button";
statusBar.setText( s );
repaint();
}
}
public static void main( String args[] )
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
MouseDetails app = new MouseDetails();
}
});
}
}
class mainThread implements Runnable
{
public void run()
{
MouseDetailsPanel panel = new MouseDetailsPanel();
JFrame frame = new JFrame("Mouse clicks and buttons" );
frame.add(panel.statusBar,BorderLayout.SOUTH);
frame.add(panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize( 360, 240 );
frame.setVisible(true);
}
}
public class MouseDetails
{
/*
public void init()
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
MouseDetailsPanel panel = new MouseDetailsPanel();
add(panel);
add(panel.statusBar,BorderLayout.SOUTH);
}
});
}
*/
public static void main( String args[] )
{
EventQueue.invokeLater(new mainThread());
}
}
Maintained by John Loomis, updated Sun Feb 17 19:11:33 2019