@Override public ARankColumnModel setWidth(float width) { if (isCompressed) { this.propertySupport.firePropertyChange( PROP_WIDTH, compressedWidth, this.compressedWidth = width); return this; } float shift = getSpaces(); float factor = (width - shift) / (this.width - shift); // new / old for (ARankColumnModel col : this) { float wi = ((float) col.getParentData()) * factor; col.setParentData(wi); col.removePropertyChangeListener(PROP_WIDTH, listener); col.setWidth(wi); col.addPropertyChangeListener(PROP_WIDTH, listener); } return super.setWidth(width); }