JavaFX Marquee离开了我的节点

时间:2016-11-10 10:54:53

标签: animation javafx java-8 transition marquee

我在使用JavaFX的Marquee动画时出现问题。我有一个带有三个节点的HBox,在第二个节点中我有一个Text节点,我需要进行Marquee转换,但是当文本离开第二个节点时我需要它不可见。

我会设置一张图片来显示我的问题(文字在白色区域可见)。

text introduces inside white node

我的Hbox代码:

    HBox bill = new HBox(0);
    bill.getChildren().addAll(logoPane,product,total);
    bill.setBackground(new Background(new BackgroundFill(Color.web("#FFFFFF"), CornerRadii.EMPTY, Insets.EMPTY)));
    bill.setHgrow(product, Priority.ALWAYS);

动画:

    timelineAnimation = new Timeline();
    final KeyValue kv = new KeyValue(productLabel.translateXProperty(), -1000);
    final KeyFrame kf = new KeyFrame(Duration.millis(2000), kv);
    timelineAnimation.getKeyFrames().add(kf);

我如何定义我的产品节点:

productLabel.setFont(new Font("Times New Roman",30));

    product = new StackPane();
    product.setMaxWidth(2000);
    product.setMaxHeight(100);
    product.setMinWidth(574);
    product.setMinHeight(100);

    product.getChildren().add(productLabel);
    product.setBackground(new Background(new BackgroundFill(Color.RED, CornerRadii.EMPTY, Insets.EMPTY)));
    product.setAlignment(productLabel, Pos.CENTER);

希望这是足够的信息。

谢谢!

1 个答案:

答案 0 :(得分:1)

只需为Rectangle窗格添加clip product,并将其大小绑定到窗格大小:

Rectangle clip = new Rectangle();
product.layoutBoundsProperty().addListener((observable, oldValue, newValue) -> {
    clip.setWidth(newValue.getWidth());
    clip.setHeight(newValue.getHeight());
});
product.setClip(clip);

这将确保product的后代不会被绘制到此节点的边界之外。