class ButtonMouseListener extends MouseAdapter { Component glass; Container contentPane; JButton butt; public ButtonMouseListener(Component glass, Container contentPane, JButton butt) { this.glass = glass; this.contentPane = contentPane; this.butt = butt; } public void mouseReleased(MouseEvent e) { redispatchMouseEvent(e); System.out.println("mouse released at " + e.getX() + "/" + e.getY()); } private void redispatchMouseEvent(MouseEvent e) { Point gpPoint = e.getPoint(); Point cpPoint = SwingUtilities.convertPoint(glass, gpPoint, contentPane); Component button = SwingUtilities.getDeepestComponentAt(contentPane, cpPoint.x, cpPoint.y); if ((button != null) && (button.equals(butt)) && gpPoint.x >= glass.getWidth() / 2) { Point buttPoint = SwingUtilities.convertPoint(glass, gpPoint, button); button.dispatchEvent(new MouseEvent(button, e.getID(), e .getWhen(), e.getModifiers(), buttPoint.x, buttPoint.y, e.getClickCount(), e.isPopupTrigger())); } } }