RightClickGlassPanepublic class RightClickGlassPane extends JComponent implements MouseListener, MouseMotionListener
Fields Summary |
---|
private JPopupMenu | popup | private Container | contentPane |
Constructors Summary |
---|
public RightClickGlassPane(Container contentPane, JPopupMenu menu)
addMouseListener(this);
addMouseMotionListener(this);
this.contentPane = contentPane;
popup = menu;
|
Methods Summary |
---|
public static void | main(java.lang.String[] args)
// create a frame with some components in it
JFrame frame = new JFrame("Right Click Test");
JButton button = new JButton("this is a button");
JTextField tf = new JTextField("this is a textfield");
JPanel panel = new JPanel();
panel.add(button);
panel.add(tf);
frame.getContentPane().add(panel);
JPopupMenu popup = new JPopupMenu();
popup.add(new JMenuItem("Dogs"));
popup.add(new JMenuItem("Cats"));
popup.add(new JMenuItem("Mass Hysteria"));
// create the right click glass pane.
Component rc = new RightClickGlassPane(frame.getContentPane(),popup);
// set as glasspane and make it visible
frame.setGlassPane(rc);
rc.setVisible(true);
// pack and show the frame
frame.pack();
frame.setSize(400,200);
frame.show();
| public void | mouseClicked(java.awt.event.MouseEvent e)
redispatchMouseEvent(e, false);
| public void | mouseDragged(java.awt.event.MouseEvent e)
redispatchMouseEvent(e, false);
| public void | mouseEntered(java.awt.event.MouseEvent e)
redispatchMouseEvent(e, false);
| public void | mouseExited(java.awt.event.MouseEvent e)
redispatchMouseEvent(e, false);
| public void | mouseMoved(java.awt.event.MouseEvent e)
redispatchMouseEvent(e, false);
| public void | mousePressed(java.awt.event.MouseEvent e)
redispatchMouseEvent(e, false);
| public void | mouseReleased(java.awt.event.MouseEvent e)
redispatchMouseEvent(e, false);
| public static void | p(java.lang.String str)
System.out.println(str);
| public void | paint(java.awt.Graphics g)
//g.drawString("I'm a glass pane",50,50);
| private void | redispatchMouseEvent(java.awt.event.MouseEvent e, boolean repaint)
// if it's a popup
if(e.isPopupTrigger()) {
// show the popup and return
popup.show(e.getComponent(), e.getX(), e.getY());
} else {
// since it's not a popup we need to redispatch it.
// get the mouse click point relative to the content pane
Point containerPoint = SwingUtilities.convertPoint(this,
e.getPoint(),contentPane);
// find the component that under this point
Component component = SwingUtilities.getDeepestComponentAt(
contentPane,
containerPoint.x,
containerPoint.y);
// return if nothing was found
if (component == null) {
return;
}
// convert point relative to the target component
Point componentPoint = SwingUtilities.convertPoint(
this,
e.getPoint(),
component);
// redispatch the event
component.dispatchEvent(new MouseEvent(component,
e.getID(),
e.getWhen(),
e.getModifiers(),
componentPoint.x,
componentPoint.y,
e.getClickCount(),
e.isPopupTrigger()));
}
|
|