我正在寻找一个解决方案,通过淡入或翻转或任何动画添加节点。 谢谢你的帮助。
我在这里找到了相同的问题,但没有任何进一步的帮助:Animated component adding-delete in a VBox
答案 0 :(得分:3)
正如珠宝已经提到过的,你会使用Transitions。 以下是如何为您的用例执行此操作的示例:
public static void addFadingIn(final Node node, final Group parent) {
final FadeTransition transition = new FadeTransition(Duration.millis(250), node);
transition.setFromValue(0);
transition.setToValue(1);
transition.setInterpolator(Interpolator.EASE_IN);
parent.getChildren().add(node);
transition.play();
}
public static void removeFadingOut(final Node node, final Group parent) {
if (parent.getChildren().contains(node)) {
final FadeTransition transition = new FadeTransition(Duration.millis(250), node);
transition.setFromValue(node.getOpacity());
transition.setToValue(0);
transition.setInterpolator(Interpolator.EASE_BOTH);
transition.setOnFinished(finishHim -> {
parent.getChildren().remove(node);
});
transition.play();
}
}
使用Java8的更实际的实现:
public static void addAnimating(final Node node, final Group parent,
final Supplier<Animation> animationCreator) {
parent.getChildren().add(node);
animationCreator.get().play();
}
public static void removeAnimating(final Node node, final Group parent,
final Supplier<Animation> animationCreator) {
if (parent.getChildren().contains(node)) {
final Animation animation = animationCreator.get();
animation.setOnFinished(finishHim -> {
parent.getChildren().remove(node);
});
animation.play();
}
}
上找到完整示例
答案 1 :(得分:1)
您可以使用内置Transitions或第三方库,例如FXExperience Canned Animations。
有关将动画与标准布局窗格集成的示例,请参阅示例解决方案中使用的LayoutAnimator code:Animation upon layout changes。 LayoutAnimator非常通用,可以与其提供的FlowPane示例一起使用其他窗格(使用FlowPane看起来有点凉爽)。