我需要创建一个动画来删除当前节点,然后将新节点添加到VBox。
public final class Cart extends javafx.scene.layout.VBox {
...
public FadeTransition hide_old_show_new(ArrayList<Text> nodes) {
var transition = new FadeTransition();
var size = getChildren().size();
if (size > 0 && !getChildren().get(0).equals(nodes.get(0))) {
transition = new FadeTransition(Duration.millis(200), getChildren().get(size - 1));
transition.setFromValue(1);
transition.setToValue(0);
transition.setOnFinished((event) -> {
getChildren().remove(size - 1);
hide_old_show_new(nodes);
});
transition.play();
} else if (size < nodes.size()) {
getChildren().add(nodes.get(size));
getChildren().get(size).setOpacity(0);
transition = new FadeTransition(Duration.millis(200), getChildren().get(size));
transition.setFromValue(0);
transition.setToValue(1);
transition.setOnFinished((event) -> {
hide_old_show_new(nodes);
});
transition.play();
}
return transition;
}
...
我希望这是可以理解的。但是,它不必要地复杂。
您知道如何简化吗?还是更好的算法?我会很感激的。
但是,我不想使用使用* .fxml的算法。
请帮助
谢谢