Самым простым способом было бы запустить настраиваемое событие propertyChange на панели, которая заменяет дочерний элемент, так что после того, как он заменяет дочерний элемент, оно запускает событие.Вот хороший пример: http://download.oracle.com/javase/tutorial/javabeans/properties/bound.html
Как только вы это сделаете, JSplitpane может зарегистрировать слушателя и прослушать это свойство, как описано здесь: http://download.oracle.com/javase/tutorial/uiswing/events/propertychangelistener.html
Чтобы подвести итогв панели, которая меняет дочерний объект, вам нужно инициализировать PropertyChangeSupport:
private final PropertyChangeSupport pcs = new PropertyChangeSupport( this );
Затем, когда вы меняете панель:
//All code to swap out the panel goes here
this.pcs.firePropertyChange( "childUpdated", false, true );
А в JSplitPane вам нужно что-токак это:
//...where initialization occurs:
...
amountField.addPropertyChangeListener("childUpdated",
new ChildUpdateListener());
...
class ChildUpdateListener implements PropertyChangeListener {
public void propertyChanged(PropertyChangeEvent e) {
updateToPreferedSize();
}
}