我想创建一个RippleAnimation
,所以我制作了一个圆圈并使用ScaleTransition
并使用Button
方法将其放在setGraphic(..);
中
样例代码:
final Circle circle = new Circle(3);
circle.setFill(Color.color(0, 0, 0, 0.2));
ScaleTransition scaleTransition = new ScaleTransition(Duration.millis(500), circle);
scaleTransition.setToX(50f);
scaleTransition.setToY(50f);
scaleTransition.setAutoReverse(false);
scaleTransition.setCycleCount(1);
button.setGraphic(circle);
button.setOnMouseEntered(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
scaleTransition.play();
}
});
...
但它超过了
Button
:我如何才能实现圆圈不会超过按钮?
最佳答案
只需使用形状裁剪:
Rectangle clip = new Rectangle();
clip.widthProperty().bind(button.widthProperty());
clip.heightPropety().bind(button.heightProperty());
circle.setClip(clip);
希望这行得通,因为从未与
setGraphics()
合作。也许尝试将按钮+圆圈放入StackPane
中以达到相同的结果。