I've cross-posted the question here: http://stackoverflow.com/questions/27953751/splitpane-layout-issue
I'm still looking for solutions. -Florian Am Montag, 5. Januar 2015, 22.35:48 schrieb Florian Brunner: > Hi Scott, > > Thanks for your answer. > > Unfortunatly, I still couldn't fix this issue. > > I tried several things including setting the prefWidth/ prefHeight of the > items to the expected value, but I couldn't stop the SplitPane to > effectively "hide" the first and the third (last) item during a re-layout. > > The two dividers changed during the layoutChildren call as follows: > > Divider position changed: old value: 0.10857763300760044, new value: > 0.004343105320304018 > > Divider position changed: old value: 0.8914223669923995, new value: > 0.995656894679696 > > I had a look at the com.sun.javafx.scene.control.skin.SplitPaneSkin (source > code provided with the JDK), but unfortunatly it's not easy there to see how > the areas are calculated in this situation. > > You mentioned the min/ max sizes. Just for testing purposes I also set the > minHeight/ minWidth but this only had the effect that I couldn't readjust > the divider with the mouse anymore. During the re-layout the issue still > persisted. > > What else could I try? > > -Florian > > Am Montag, 22. Dezember 2014, 07.19:37 schrieb Scott Palmer: > > The min/max sizes of the children are probably being respected. > > > > Scott > > > > > On Dec 22, 2014, at 7:13 AM, Florian Brunner <fbrunnerl...@gmx.ch> > > > wrote: > > > > > > Hi, > > > > > > Sometimes when I'm setting the divider positions of a SplitPane > > > programmatically my value get overridden again by some JavaFX internal > > > layout code. > > > > > > For debugging purposes I've added a listener to the position property of > > > the divider and have thrown a RuntimeException to see the stack trace. > > > It > > > looks like this: > > > > > > ------------------------------------------------------------------------ > > > -- > > > ---------------- at > > > com.sun.javafx.binding.ExpressionHelper$Generic.fireValueChangedEvent(Ex > > > pr > > > essionHelper.java:361)> > > > > > > at > > > > > > com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(Expression > > > He > > > lper.java:81)> > > > > > > at > > > > > > javafx.beans.property.DoublePropertyBase.fireValueChangedEvent(DoublePro > > > pe > > > rtyBase.java:106)> > > > > > > at > > > > > > javafx.beans.property.DoublePropertyBase.markInvalid(DoublePropertyBase. > > > ja > > > va:113)> > > > > > > at > > > > > > javafx.beans.property.DoublePropertyBase.set(DoublePropertyBase.java:146 > > > ) > > > > > > at > > > javafx.scene.control.SplitPane$Divider.setPosition(SplitPane.java:486 > > > ) > > > at > > > > > > com.sun.javafx.scene.control.skin.SplitPaneSkin.setAbsoluteDividerPos(Sp > > > li > > > tPaneSkin.java:310)> > > > > > > at > > > > > > com.sun.javafx.scene.control.skin.SplitPaneSkin.setupContentAndDividerFo > > > rL > > > ayout(SplitPaneSkin.java:502)> > > > > > > at > > > > > > com.sun.javafx.scene.control.skin.SplitPaneSkin.layoutChildren(SplitPane > > > Sk > > > in.java:817)> > > > > > > at javafx.scene.control.Control.layoutChildren(Control.java:589) > > > at javafx.scene.Parent.layout(Parent.java:1074) > > > at javafx.scene.Parent.layout(Parent.java:1080) > > > at javafx.scene.Parent.layout(Parent.java:1080) > > > at javafx.scene.Parent.layout(Parent.java:1080) > > > at javafx.scene.Parent.layout(Parent.java:1080) > > > at javafx.scene.Parent.layout(Parent.java:1080) > > > at javafx.scene.Parent.layout(Parent.java:1080) > > > at javafx.scene.Parent.layout(Parent.java:1080) > > > at javafx.scene.Parent.layout(Parent.java:1080) > > > at javafx.scene.Scene.doLayoutPass(Scene.java:532) > > > at javafx.scene.Scene$ScenePulseListener.pulse(Scene.java:2363) > > > at com.sun.javafx.tk.Toolkit.lambda$runPulse$28(Toolkit.java:314) > > > at com.sun.javafx.tk.Toolkit$$Lambda$230/25595560.run(Unknown Source) > > > at java.security.AccessController.doPrivileged(Native Method) > > > at com.sun.javafx.tk.Toolkit.runPulse(Toolkit.java:313) > > > at com.sun.javafx.tk.Toolkit.firePulse(Toolkit.java:340) > > > at > > > com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:45 > > > 1 > > > ) > > > at > > > com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:43 > > > 1 > > > ) > > > at > > > > > > com.sun.javafx.tk.quantum.QuantumToolkit.lambda$runToolkit$363(QuantumTo > > > ol > > > kit.java:298)> > > > > > > at > > > > > > com.sun.javafx.tk.quantum.QuantumToolkit$$Lambda$59/174792896.run(Unknow > > > n > > > Source) > > > > > > at > > > > > > com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher. > > > ja > > > va:95)> > > > > > > at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method) > > > at > > > > > > com.sun.glass.ui.gtk.GtkApplication.lambda$null$45(GtkApplication.java:1 > > > 26 > > > ) > > > > > > at > > > com.sun.glass.ui.gtk.GtkApplication$$Lambda$55/1472148546.run(Unknown > > > > > > Source) > > > > > > at java.lang.Thread.run(Thread.java:745) > > > > > > ------------------------------------------------------------------------ > > > -- > > > ---------------- > > > > > > It doesn't seem to get triggered by some code of mine (at least not > > > directly according to the stack trace). > > > > > > Why is this re-layout happing here? > > > Why does it override the values I've set for the divider positions? > > > How can stop this? > > > > > > Thanks for some insights. > > > > > > -Florian