JavaFXのを使用して、一定の間隔で次々の画像を表示する方法

code_runner:

私はJavaFXのを勉強しています。私は、数秒後にいずれかによって、いくつかのアイコンのいずれかを表示したいです。私のコードは動作しません。私はいくつかのコードを書かれています。そして、アイコンはと呼ばれる別のフォルダに保存された画像

public class Main extends Application {
  ImageView imv;   
  Scene scene;

  @Override
  public void start(Stage primarystage) {
      gp=new GridPane();
      gp.setPadding(new Insets(0, 10, 10, 10));
      ...
      gp.setVgap(0);
      gp.setHgap(5);

      imv=new ImageView();

      // logic for displaying images

      scene=new Scene(gp, 450, 300, Color.TRANSPARENT);

      primarystage.setScene(scene);
      primarystage.setTitle("WINDOW");
      primarystage.show();
  }
  public static void main(String[] args) {
        launch(args);
  }
}

私は、ウェブ上で適切な答えを見つけることができませんでした。私が知っている必要があります他に何、それがどのように行われるかのロジックを知りたいです。私は簡単に表示することができ、単一の画像から。しかし、私は複数の画像一つ一つを表示する方法を知りません。

Tanzeel:

さてさて、私はあなたのために何かをしようとしました。私は、あなたが探している内容を正確に把握していないが、このコードは、少なくともあなたにいくつかのアイデアを与えるだろう。私はいくつかの仮定を行いました。あなたは名前と同じディレクトリの下にフォルダをした画像 1.png、2.png、3.pngなどとして、すべてのアイコン(表示される)があります。私は、自動的にそれぞれのパッケージから必要なクラスをインポートしますこれはNetbeans 8.2を使用しています。

import javafx.application.Application;
import javafx.concurrent.Task;
...
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
...

public class Main extends Application {

  ImageView imv;
  Label label;
  String file="";

  GridPane gridPane;
  Scene scene;
  Task<Void> slideShow;

  @Override
  public void start(Stage primarystage) {
    gridPane=new GridPane();
    gridPane.setPadding(new Insets(0, 10, 10, 10));

    // business logic for slide show 
    startSlideShow();

    imv=new ImageView();

    label = new Label();
    label.setGraphic(imv);   

    gridPane.add(label, 5, 0, 1, 1);      

    scene=new Scene(gridPane, 450, 300, Color.TRANSPARENT);

    primarystage.setScene(scene);
    primarystage.show();

    // spawning a new thread for this task
    new Thread(slideShow).start();
  }

  public void startSlideShow() {
    slideShow= new Task<Void>() {
      @Override
      protected Void call() {
        int i = 1;
        while (true) {
          try {
            Thread.sleep(1000);
            updateMessage(i + ".png");
          } catch (Exception e) {
          }
          i++;
        }
      }
     };
     task1.messageProperty().addListener((observable, oldValue, newValue) -> {
       Image image = new Image(getClass().getResourceAsStream("images/" + newValue));
       imv.setImage(image);
      });
    }

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

これはあなたの要件に応じてコードをカスタマイズすることができます動作します願っています。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=282102&siteId=1