2016-12-29 10 views
0

После изменения размера окна мой разделитель DivitPane перемещается в другое положение в соответствии с заданным процентом (например: dividerPositions = "0.05").Как связать положение разделителя с пикселями вместо процента на SplitPanes в JavaFX?

Но я хочу, чтобы он оставался на том же месте после изменения размера (как будто он был связан с размером пикселя, а не процентом), где он был установлен ранее. Я не хочу, чтобы он «перемещался» (после ограничения процента) при изменении размера его родительской панели.

Возможно ли это как-то? (Я хотел бы это исправить предпочтительно от кода, решение CSS вторична для меня)

Идеальное решение для меня что-то было бы похоже на это:

<SplitPane orientation="VERTICAL" dividerPositionFromTop="100px" 
      AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" 
      AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" > 
... 
</SplitPane> 

Где dividerPositionFromTop, к сожалению, не существует по мои знания.

ответ

1

Вы можете добавить слушателя к heightProperty вашего SplitPane и пересчитывать процентное значение:

SplitPane splitPane = new SplitPane(); 

splitPane.heightProperty().addListener(new ChangeListener<Number>() { 
    @Override 
    public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) { 
     double height = splitPane.getHeight(); 
     double dividerPositionFromTop = 100; 
     splitPane.setDividerPosition(0, dividerPositionFromTop/height); 
    } 
}); 
splitPane.getItems().addAll(new TextArea("1"), new TextArea("2")); 
splitPane.setOrientation(Orientation.VERTICAL);