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