以下はjavafx scriptでテキストスクロールを実装している。javafx 2.0で使えるように実現してみた。なお、javafx 2.xではjavafx scriptは廃止される意向(Oracle)
Swing UIよりvisualなことが実現できるし、Java 8だとJavaFXが標準UIになることから、SwingUIを使っている場合はJavaFXにマイグレーションするのがよさそう。
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(); }