void () { if (!isValid()) { calculateBounds(getSize(), myComponentBounds); } final int componentCount = getComponentCount(); LOG.assertTrue(componentCount <= myComponentBounds.size()); for (int i = componentCount - 1; i >= 0; i--) { final Component component = getComponent(i); component.setBounds(myComponentBounds.get(i)); } if (myNeedCheckHoverOnLayout) { Point location = MouseInfo.getPointerInfo().getLocation(); SwingUtilities.convertPointFromScreen(location, this); for (int i = componentCount - 1; i >= 0; i--) { final Component component = getComponent(i); if (component instanceof ActionButton actionButton && component.getBounds().contains(location)) { actionButton.myRollover = true; } } } }