クラウドインフラ構築記

現在AWSの構築支援に携わっております。今注視しているのは、GKE、BigQuery、Google Dataflowなどサービスを展開しているGoolge Cloud Platformです。

テキストスクロール


以下はjavafx scriptでテキストスクロールを実装している。javafx 2.0で使えるように実現してみた。なお、javafx 2.xではjavafx scriptは廃止される意向(Oracle)

Swing UIよりvisualなことが実現できるし、Java 8だとJavaFXが標準UIになることから、SwingUIを使っている場合はJavaFXにマイグレーションするのがよさそう。

http://codeyard.wordpress.com/2010/08/17/javafx-animations-auto-text-scrolling-using-timeline-and-keyframe/


public class TextScroll extends VBox
{
 private Number x;
 private Number y;
 private double width;
 private double height;
 private Paint stroke;
 private Number strokeWidth;
 private Text scrollingText;

 public TextScroll()
 {

Group root = new Group();

String scroll_char = "ここにスクロールする文字を入れる";

 scrollingText = TextBuilder.create()
 .text(scroll_char)
 .layoutX(50)
 .textOrigin(VPos.TOP)
 .textAlignment(TextAlignment.JUSTIFY)
 .fill(Color.PINK)
 .font(Font.font("SansSerif", FontPosture.ITALIC, 25))
 .build();

 Group myGroup = GroupBuilder.create()
 .children(scrollingText)
 .clip(RectangleBuilder.create()
 .width(1000)
 .height(40)
 .build()
 )
 .build();

width = scroll_char.length()* 20;

 root.getChildren().add(myGroup);
 this.getChildren().add(root);

 scrollUp();

 }

public boolean isScrollingText ()
 {
 return true;
 }

 public void scrollUp ()
 {
 autoTimer.play();
 }

 public void stopScrolling ()
 {
 autoTimer.stop ();
 }

 @SuppressWarnings("unchecked")
 private Timeline autoTimer = TimelineBuilder.create()
 .cycleCount(Timeline.INDEFINITE)
 .keyFrames(new KeyFrame(
 new Duration(10L),
 new EventHandler(){

public void handle(Event arg0) {
 if (scrollingText.getTranslateX() + width < 0)
 {
 scrollingText.setTranslateX(0.0);
 }
 // scrollingText.setTranslateY(scrollingText.getTranslateX()-0.5);
 scrollingText.setTranslateX(scrollingText.getTranslateX()-0.5);
 }

}
 )).build();

}

コメントは受け付けていません。