Advertisement
noor017

Horizontal Marquee Text - JavaFX

May 18th, 2016
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.86 KB | None | 0 0
  1. /*
  2.  * Horizontal Marquee Text - JavaFX
  3.  * By Asaduzzaman Noor
  4.  */
  5. package marquee;
  6.  
  7. import java.net.URL;
  8. import java.util.ResourceBundle;
  9. import javafx.animation.Interpolator;
  10. import javafx.animation.TranslateTransition;
  11. import javafx.animation.TranslateTransitionBuilder;
  12. import javafx.event.ActionEvent;
  13. import javafx.event.EventHandler;
  14. import javafx.fxml.FXML;
  15. import javafx.fxml.Initializable;
  16. import javafx.scene.control.Label;
  17. import javafx.scene.layout.Pane;
  18. import javafx.scene.text.Text;
  19. import javafx.util.Duration;
  20.  
  21. /**
  22.  *
  23.  * @author Asaduzzaman Noor
  24.  */
  25. public class MainUiController implements Initializable {
  26.     TranslateTransition transition;
  27.     private Label label;
  28.     @FXML
  29.     private Pane parentPane;
  30.     @FXML
  31.     private Text node;
  32.    
  33.     private void rerunAnimation() {
  34.         transition.stop();
  35.         // if needed set different text on "node"
  36.         recalculateTransition();
  37.         transition.playFromStart();
  38.     }
  39.    
  40.     private void recalculateTransition() {
  41.         transition.setToX(node.getBoundsInLocal().getMaxX() * -1 - 100);
  42.         transition.setFromX(parentPane.widthProperty().get() + 100);
  43.  
  44.         double distance = parentPane.widthProperty().get() + 2 * node.getBoundsInLocal().getMaxX();
  45.         transition.setDuration(new Duration(distance / 0.05));
  46.     }
  47.    
  48.     @Override
  49.     public void initialize(URL url, ResourceBundle rb) {
  50.         transition = TranslateTransitionBuilder.create()
  51.         .duration(new Duration(10))
  52.         .node(node)
  53.         .interpolator(Interpolator.LINEAR)
  54.         .cycleCount(1)
  55.         .build();
  56.  
  57.         transition.setOnFinished(new EventHandler<ActionEvent>() {
  58.             @Override
  59.             public void handle(ActionEvent actionEvent) {
  60.                 rerunAnimation();
  61.             }
  62.         });
  63.  
  64.         rerunAnimation();
  65.     }    
  66.    
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement