private boolean layingOut = false; public void doLayout(){ try{ layingOut = true; super.doLayout(); }finally{ layingOut = false; } } public Dimension getSize(){ Dimension dim = super.getSize(); if(!layingOut) dim.width = Math.max(dim.width, getPreferredSize().width); return dim; }