Re: SplitPane layout question
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(Expr essionHelper.java:361) at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHe lper.java:81) at javafx.beans.property.DoublePropertyBase.fireValueChangedEvent(DoublePrope 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(Spli tPaneSkin.java:310) at com.sun.javafx.scene.control.skin.SplitPaneSkin.setupContentAndDividerForL ayout(SplitPaneSkin.java:502) at com.sun.javafx.scene.control.skin.SplitPaneSkin.layoutChildren(SplitPaneSk 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:451 ) at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:431 ) at com.sun.javafx.tk.quantum.QuantumToolkit.lambda$runToolkit$363(QuantumTool kit.java:298) at com.sun.javafx.tk.quantum.QuantumToolkit$$Lambda$59/174792896.run(Unknown 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:126 ) 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
Re: SplitPane layout question
Maybe related to this bug: https://javafx-jira.kenai.com/browse/RT-38851 Best regards, David Gilbert http://www.jfree.org/ On 22 Dec 2014, at 13:19, Scott Palmer swpal...@gmail.com wrote: 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(ExpressionHelper.java:361) at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:81) at javafx.beans.property.DoublePropertyBase.fireValueChangedEvent(DoublePropertyBase.java:106) at javafx.beans.property.DoublePropertyBase.markInvalid(DoublePropertyBase.java: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(SplitPaneSkin.java:310) at com.sun.javafx.scene.control.skin.SplitPaneSkin.setupContentAndDividerForLayout(SplitPaneSkin.java:502) at com.sun.javafx.scene.control.skin.SplitPaneSkin.layoutChildren(SplitPaneSkin.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:451) at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:431) at com.sun.javafx.tk.quantum.QuantumToolkit.lambda$runToolkit$363(QuantumToolkit.java:298) at com.sun.javafx.tk.quantum.QuantumToolkit$$Lambda$59/174792896.run(Unknown Source) at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method) at com.sun.glass.ui.gtk.GtkApplication.lambda$null$45(GtkApplication.java:126) 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
SplitPane layout question
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(ExpressionHelper.java:361) at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:81) at javafx.beans.property.DoublePropertyBase.fireValueChangedEvent(DoublePropertyBase.java:106) at javafx.beans.property.DoublePropertyBase.markInvalid(DoublePropertyBase.java: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(SplitPaneSkin.java:310) at com.sun.javafx.scene.control.skin.SplitPaneSkin.setupContentAndDividerForLayout(SplitPaneSkin.java:502) at com.sun.javafx.scene.control.skin.SplitPaneSkin.layoutChildren(SplitPaneSkin.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:451) at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:431) at com.sun.javafx.tk.quantum.QuantumToolkit.lambda$runToolkit$363(QuantumToolkit.java:298) at com.sun.javafx.tk.quantum.QuantumToolkit$$Lambda$59/174792896.run(Unknown Source) at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method) at com.sun.glass.ui.gtk.GtkApplication.lambda$null$45(GtkApplication.java:126) 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
Re: SplitPane layout question
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(ExpressionHelper.java:361) at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:81) at javafx.beans.property.DoublePropertyBase.fireValueChangedEvent(DoublePropertyBase.java:106) at javafx.beans.property.DoublePropertyBase.markInvalid(DoublePropertyBase.java: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(SplitPaneSkin.java:310) at com.sun.javafx.scene.control.skin.SplitPaneSkin.setupContentAndDividerForLayout(SplitPaneSkin.java:502) at com.sun.javafx.scene.control.skin.SplitPaneSkin.layoutChildren(SplitPaneSkin.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:451) at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:431) at com.sun.javafx.tk.quantum.QuantumToolkit.lambda$runToolkit$363(QuantumToolkit.java:298) at com.sun.javafx.tk.quantum.QuantumToolkit$$Lambda$59/174792896.run(Unknown Source) at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method) at com.sun.glass.ui.gtk.GtkApplication.lambda$null$45(GtkApplication.java:126) 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