boolean (Point currentLocationOnScreen) { myAlarm.cancelAllRequests(); if (popup != null && popup.isVisible()) { final Point screen = popup.getLocationOnScreen(); final Rectangle popupScreenRect = new Rectangle(screen.x, screen.y, popup.getSize().width, popup.getSize().height); if (! popupScreenRect.contains(currentLocationOnScreen)) { myAlarm.cancelAllRequests(); myAlarm.addRequest(() -> { if (popup != null && popup.isVisible()) { popup.cancel(); } }, 300); return true; } } return false; }