java - 如何让文字自动滚动不断循环呢?

标签 java javafx fxml autoscroll

我正在寻找一种使用 JavaFX 使某些文本行自动滚动连续循环的方法。这与credits-like scrolling非常相似。在下面这些问题中。它是工作站屏幕,而不是移动设备。文本是固定的,不是来自提要,所以我希望它能够流通...

一个简单的用例:您有 30 行文本,但任何时候只能看到 12 行。所以我想将文本向上滚动到屏幕上,并在底部稍作休息,然后文本环绕并继续滚动。

我以为我可以在底部添加文本并将其从顶部移开,但事实证明并不相同。使用向上滚动的视觉效果...实际上是规范的重要部分。所以我又回到了起点。

我更喜欢的一些事情是不需要销毁文本或重新加载。更喜欢指向当前文本框的顶部或其他内容,以便它环绕。否则就像以前一样,我需要从顶部删除文本并将文本放入底部。需要 JavaFX,不能将 Javascript 用于应用程序。你最好的击球是什么? 提前致谢

最佳答案

这是一些滚动文本

import javafx.animation.KeyFrame;
import javafx.animation.KeyValue;
import javafx.animation.Timeline;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.ScrollPane;
import javafx.scene.layout.VBox;
import javafx.scene.text.Text;
import javafx.stage.Stage;
import javafx.util.Duration;

public class Scroll extends Application {

    @Override
    public void start(Stage primaryStage) {
        VBox vbox = new VBox();
        for (int i = 0; i < 30; i++)
            vbox.getChildren().add(new Text("line " + i));
        //add a copy of the first 12 lines that will be showing as wrapped
        for (int i = 0; i < 12; i++)
            vbox.getChildren().add(new Text("line " + i));

        ScrollPane sp = new ScrollPane(vbox);
        Scene scene = new Scene(sp, 300, 10*12);//guess height

        primaryStage.setScene(scene);
        primaryStage.show();
        //resize to exactly 12 lines
        double textHeight = vbox.getHeight() / vbox.getChildren().size();
        primaryStage.setHeight(textHeight*12+primaryStage.getHeight()-scene.getHeight());

        Timeline timeline = new Timeline();
        timeline.setCycleCount(Timeline.INDEFINITE);
        KeyValue kv = new KeyValue(sp.vvalueProperty(), sp.getVmax());
        KeyFrame kf = new KeyFrame(Duration.millis(5000), kv);
        timeline.getKeyFrames().addAll(kf);
        timeline.play();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

我意识到这不是你想要的。我尝试了一些技巧来拍摄 vbox 的图像并一遍又一遍地播放它,但除非你做得恰到好处,否则会出现一些卡顿。这只是为了满足只阅读一次文本的要求。你需要的是一个可以平滑滚动的循环结构,就像圆柱体一样。请参阅我的其他答案以获得一些乐趣。

关于java - 如何让文字自动滚动不断循环呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24472170/

相关文章:

java - Spring Webflux-WebClient : How to get a List<TheNestedPojo> nested inside a larger Response directly?

设计模式的 Java 注释?

java - 如何在 JavaFX 中正确对齐按钮?

绑定(bind)到 GraphicPropety 的 JavaFX ImageView 未显示在多个 View 上

javafx - 传递参数JavaFX FXML

java - 如何让我的成功消息在出现错误时不显示

java - 使用接口(interface)注入(inject),同时必须创建底层对象的实例

Java:对字节子数组的引用

java - 在 JavaFX 8 中管理多线程的最佳方式是什么?

javafx - 无法为 linux 创建 javafx 应用程序 .deb 包