protected void processMouseEvent(MouseEvent e) { MouseEvent transformedEvent = transformMouseEvent(e); switch (e.getID()) { case MouseEvent.MOUSE_ENTERED: if (mouseDraggedComponent == null || mouseCurrentComponent == mouseDraggedComponent) { dispatchMouseEvent(transformedEvent); } break; case MouseEvent.MOUSE_EXITED: if (mouseEnteredComponent != null) { dispatchMouseEvent( createEnterExitEvent(mouseEnteredComponent, MouseEvent.MOUSE_EXITED, e)); mouseEnteredComponent = null; } break; case MouseEvent.MOUSE_RELEASED: if (mouseDraggedComponent != null && e.getButton() == MouseEvent.BUTTON1) { transformedEvent.setSource(mouseDraggedComponent); mouseDraggedComponent = null; } dispatchMouseEvent(transformedEvent); break; default: dispatchMouseEvent(transformedEvent); } super.processMouseEvent(e); }