void (final TreePath path, JTree tree) { if (myPopup == null || !myPopup.isVisible() || myPopup.isDisposed()) return; final Window popupWindow = SwingUtilities.windowForComponent(myPopup.getContent()); if (popupWindow == null) return; final Dimension size = tree.getPreferredSize(); final Point location = popupWindow.getLocation(); final Rectangle windowBounds = popupWindow.getBounds(); final Rectangle bounds = tree.getPathBounds(path); if (bounds == null) return; final Rectangle targetBounds = new Rectangle(location.x, location.y, Math.max(Math.max(size.width, bounds.width) + 20, windowBounds.width), Math.max(tree.getRowCount() * bounds.height + 55, windowBounds.height)); ScreenUtil.cropRectangleToFitTheScreen(targetBounds); popupWindow.setBounds(targetBounds); popupWindow.validate(); popupWindow.repaint(); }