Dimension () { if (component != null) { return component.getPreferredSize(); } if (myDefaultPrefSize == null) { final EmptyBorder border = myShadowBorderProvider == null ? getPointlessBorder() : null; final MyComponent c = new MyComponent(myContent, this, border); c.setBorder(new EmptyBorder(getShadowBorderInsets())); myDefaultPrefSize = c.getPreferredSize(); } return myDefaultPrefSize; }