SplitPane Divider位置自行更改

时间:2016-12-01 23:44:01

标签: java javafx fxml splitpane

我有SplitPane表现得很奇怪。它是自发的"在没有用户交互的情况下移动。

以下是FXML布局示例:

<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>

控制器:

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);

    }
}

这里我将侦听器设置在唯一的分隔符上,以便在它发生变化时输出它的当前值。就在下面,我将其设置为0.80

这是输出:

newValue = 0.8
newValue = 0.7986577181208053

您看到它在最初设置后确实发生了变化。虽然这个例子中的变化很小,但我的主要应用程序中的问题却更加严重。

我试图在我的程序运行之间保存分隔符的位置,但每次位置值自行更改时,次要问题就变成了主要问题。

这里发生了什么以及如何防止它发生变化?根据FXML,您可以看到由于最小宽度等原因,没有其他控件应该强制进行更改。

0 个答案:

没有答案