Граничная панель с анимацией смахивания Javafx
Я работаю над приложением Javafx, которое имеет основную границу. В верхней и правой части приложения расположены разные панели. В центре есть основная панель стека, на которой я добавляю и удаляю панели по мере необходимости. Я создал анимацию смахивания, которая будет смахивать одну панель по мере того, как другая будет входить в эту область стека в центре.
Проблема заключается в том, что анимация смахивания основана на свойстве translateX каждой панели. Эти свойства простираются от одного конца основной граничной панели до другого. Это означает, что, когда я выполняю пролистывание, панели также пересекают панели основной граничной панели по бокам.
Я не уверен, как это исправить. Я подумал о том, чтобы поместить какую-то группу для инкапсуляции панелей, которые я добавляю в центр, чтобы анимация сохранялась только в узлах группы. Проблема в том, что группы не могут быть изменены, поэтому, когда я расширяю и сужаю окно, панели с ним не растут. Мое временное исправление состоит в том, чтобы сделать боковые панели невидимыми, пока анимация не выполняется Тем не менее, я хотел бы найти способ инкапсуляции этих узлов, позволяя им по-прежнему соответствовать размеру центра, или способ установить свойство translateX так, чтобы оно заполняло только стороны центрального стека.
Любые предложения будут полезны. Спасибо!
Это моя функция смахивания:
root.getChildren().add(pane1);
KeyFrame start = new KeyFrame(Duration.ZERO,
new KeyValue(pane1.translateXProperty(), root.getWidth()),
new KeyValue(pane2.translateXProperty(), 0));
KeyFrame end = new KeyFrame(Duration.seconds(1),
new KeyValue(pane1.translateXProperty(), 0),
new KeyValue(pane2.translateXProperty(), -root.getWidth()));
Timeline slide = new Timeline(start, end);
slide.setOnFinished(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
root.getChildren().remove(pane2);
for(Node b : buttonBar.getButtons()){
b.setDisable(false);
dvs.setVisible(true);
}
}
здесь root - это внешняя панель, на которой находятся эти узлы, pane1 - панель назначения, а pane2 - панель, которая удаляется.