JavaFX 2动态点加载

lin*_*boy 2 javafx-2

我想创建一些这样的加载点:

At 0 second the text on the screen is: Loading.
At 1 second the text on the screen is: Loading..
At 2 second the text on the screen is: Loading...
At 3 second the text on the screen is: Loading.
At 4 second the text on the screen is: Loading..
At 5 second the text on the screen is: Loading...
Run Code Online (Sandbox Code Playgroud)

以此类推,直到我关闭了Stage

用JavaFX做到最好/最简单的方法是什么?我一直在研究JavaFX中的动画/预加载器,但是在尝试实现这一点时似乎很复杂。

我一直试图在这三个之间创建一个循环Text

Text dot = new Text("Loading.");
Text dotdot = new Text("Loading..");
Text dotdotdot = new Text("Loading...");
Run Code Online (Sandbox Code Playgroud)

但屏幕保持静止...

如何在JavaFX中使其正常工作?谢谢。

jew*_*sea 5

这个问题类似于:javafx动画循环

这是使用JavaFX 动画框架的解决方案-对我来说似乎很简单,也不太复杂。

加载动画

import javafx.animation.*;
import javafx.application.Application;
import javafx.event.*;
import javafx.scene.*;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.util.Duration;

/** Simple Loading Text Animation. */
public class DotLoader extends Application {
  @Override public void start(final Stage stage) throws Exception {
    final Label    status   = new Label("Loading");
    final Timeline timeline = new Timeline(
      new KeyFrame(Duration.ZERO, new EventHandler() {
        @Override public void handle(Event event) {
          String statusText = status.getText();
          status.setText(
            ("Loading . . .".equals(statusText))
              ? "Loading ." 
              : statusText + " ."
          );
        }
      }),  
      new KeyFrame(Duration.millis(1000))
    );
    timeline.setCycleCount(Timeline.INDEFINITE);

    VBox layout = new VBox();
    layout.getChildren().addAll(status);
    layout.setStyle("-fx-background-color: cornsilk; -fx-padding: 10;");
    stage.setScene(new Scene(layout, 50, 35));
    stage.show();

    timeline.play();
  }

  public static void main(String[] args) throws Exception { launch(args); }
}
Run Code Online (Sandbox Code Playgroud)