2016-11-10 2 views
1

У меня проблема с анимацией Marquee с JavaFX. У меня есть HBox с тремя узлами, а во втором узле у меня есть узел Text внутри, который мне нужен, чтобы преобразовать Marquee, но когда текст выходит из второго узла, мне нужно, чтобы он не был виден.JavaFX 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

Просто добавьте 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 не рисуются за пределы этого узла.

+0

Ницца, он работает! Благодаря @fabian – accnono

Смежные вопросы