2

I have a SplitPane that is behaving strangely. It is "spontaneously" moving without interaction from the user.

Here is the sample FXML layout:

<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller">
   <children>
      <SplitPane fx:id="splitPane" dividerPositions="0.29797979797979796" layoutX="100.0" layoutY="67.0" prefHeight="160.0" prefWidth="200.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
        <items>
          <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0" />
          <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0" />
        </items>
      </SplitPane>
   </children>
</AnchorPane>

And the controller:

public class Controller {

    @FXML
    private SplitPane splitPane;

    @FXML
    private void initialize() {

        // Add Listener to the divider value
        splitPane.getDividers().get(0).positionProperty().addListener((observable, oldValue, newValue) -> {
            System.out.println("newValue = " + newValue);
        });

        splitPane.getDividers().get(0).setPosition(0.80);

    }
}

Here I set the listener on the only divider to output it's current value when it changes. Just below, I set it to 0.80.

Here is the output:

newValue = 0.8
newValue = 0.7986577181208053

You see it does change after initially setting it. While this change is minimal in the example, the problem is exacerbated in my main application.

I am trying to save the divider's position between runs of my program, but with the position value changing on its own every time, the minor issue becomes a major one.

What is happening here and how can I prevent it from changing? Per the FXML, you can see there are no other controls that should be forcing a change due to minimum width, etc.

Zephyr
  • 9,885
  • 4
  • 28
  • 63
  • What is the actual size of the `SplitPane` when it is changing to the new value? I smell some pixel rounding here. – DVarga Dec 02 '16 at 11:20

0 Answers0