JavaFX Marquee 走出我的节点
JavaFX Marquee go out of my node
我的 JavaFX 选取框动画有问题。我有一个带有三个节点的 HBox,在第二个节点中我有一个文本节点,我需要在其中进行 Marquee 转换,但是当文本从第二个节点出来时我需要它不可见。
我会去设置一张图片来展示我的问题(文字在白色区域可见)。
我的 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);
希望这是足够的信息。
谢谢!
只需为 product
窗格添加一个 Rectangle
作为 clip
,并将其大小绑定到窗格的大小:
Rectangle clip = new Rectangle();
product.layoutBoundsProperty().addListener((observable, oldValue, newValue) -> {
clip.setWidth(newValue.getWidth());
clip.setHeight(newValue.getHeight());
});
product.setClip(clip);
这将确保 product
的后代不会绘制到该节点的边界之外。
我的 JavaFX 选取框动画有问题。我有一个带有三个节点的 HBox,在第二个节点中我有一个文本节点,我需要在其中进行 Marquee 转换,但是当文本从第二个节点出来时我需要它不可见。
我会去设置一张图片来展示我的问题(文字在白色区域可见)。
我的 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);
希望这是足够的信息。
谢谢!
只需为 product
窗格添加一个 Rectangle
作为 clip
,并将其大小绑定到窗格的大小:
Rectangle clip = new Rectangle();
product.layoutBoundsProperty().addListener((observable, oldValue, newValue) -> {
clip.setWidth(newValue.getWidth());
clip.setHeight(newValue.getHeight());
});
product.setClip(clip);
这将确保 product
的后代不会绘制到该节点的边界之外。