/** * Layout the receiver. This method set insideBounds & insets according to bounds. Insets is * borderWidth + spacing. * * @see updateDrawableBounds */ protected void layoutComponent() { Insets in = (Insets) getInsets().clone(); in.top += spacing.top; in.left += spacing.left; in.bottom += spacing.bottom; in.right += spacing.right; Dimension d = getSize(); insideBounds.setBounds( in.left, in.top, d.width - in.left - in.right, d.height - in.top - in.bottom); updateDrawableBounds(); }
/** Update the drawableBounds member according to insideBounds and spacing. */ protected void updateDrawableBounds() { // here, we would like to avoid Rectangle creation drawableBounds.x = insideBounds.x - spacing.left; drawableBounds.y = insideBounds.y - spacing.top; drawableBounds.width = insideBounds.width + spacing.left + spacing.right; drawableBounds.height = insideBounds.height + spacing.top + spacing.bottom; Dimension d = getDepth(); backRectangle.setToBackRectangleOf(insideBounds, d); frontRectangle.setToFrontRectangleOf(insideBounds, d); }