I'm using this code to
test out JSplitPane behavior...
It looks like the default behavior of JSplitPane is to stay the same size even when it's components change size... I had to call resetToPreferredSizes() to get the splitpane to honour the new sizes of the components. Also, setPrefferedSizes() looks like it does the preferred size of the left component first, then the right component gets the rest of the split pane, so if you have a 100 pixel split pane, and you set the preferred size of the left component to 10, and the preferred size of the right component to 10, you'll end up with a 10 pixel left component, and a 90 pixel ( minus the divider ) right component.
I'm not sure why you're having problems with components size changes changing the location of the divider... by default JSplitPane should be doing what you want and you shouldn't have to save the location of the slider at all...
Could you post some code of what you are trying to do?