Code
class PopupHeaderMouseListener extends MouseAdapter {
private final Point startPt = new Point();
@Override public void mousePressed(MouseEvent e) {
if (SwingUtilities.isLeftMouseButton(e)) {
startPt.setLocation(e.getPoint());
}
}
@Override public void mouseDragged(MouseEvent e) {
Component c = e.getComponent();
Window w = SwingUtilities.getWindowAncestor(c);
if (w != null && SwingUtilities.isLeftMouseButton(e)) {
if (w.getType() == Window.Type.POPUP) { // Popup$HeavyWeightWindow
Point pt = e.getLocationOnScreen();
w.setLocation(pt.x - startPt.x, pt.y - startPt.y);
} else { // Popup$LightWeightWindow
Container popup = SwingUtilities.getAncestorOfClass(JPopupMenu.class, c);
Point pt = popup.getLocation();
popup.setLocation(pt.x - startPt.x + e.getX(), pt.y - startPt.y + e.getY());
}
}
}
}
References
No comments:
Post a Comment