我想创建一个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

java - 按钮上的JavaFX RippleAnimation-LMLPHP

我如何才能实现圆圈不会超过按钮?

最佳答案

只需使用形状裁剪:

Rectangle clip = new Rectangle();
clip.widthProperty().bind(button.widthProperty());
clip.heightPropety().bind(button.heightProperty());

circle.setClip(clip);


希望这行得通,因为从未与setGraphics()合作。也许尝试将按钮+圆圈放入StackPane中以达到相同的结果。

09-09 21:17