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...

依此类推,直到我关闭Stage.

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

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

Text dot = new Text("Loading.");
Text dotdot = new Text("Loading..");
Text dotdotdot = new Text("Loading...");

但屏幕保持静止...

我怎样才能使它在 JavaFX 中正常工作?谢谢。

4

2 回答 2

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); }
}
于 2013-04-01T17:32:28.073 回答
0

您是否考虑过使用进度指示器或进度条?我认为它们可以成为展示动画和避免问题的好方法。

我已经能够在 JavaFX 中做到这一点,而不是使用动画,而是使用 JavaFX 的并发类。

我让你在这里的代码要点。我认为这不是很直观,因为我更喜欢进度指示器。也许这不是最好的解决方案,但也许这会对你有所帮助。

干杯

于 2013-04-01T16:05:44.767 回答