JavaFX分页中的自动幻灯片放映

时间:2015-04-22 23:46:33

标签: java javafx pagination slideshow

作为初学者,我最近一直在使用JavaFx,并且给我留下了非常深刻的印象。目前,我一直试图自动设置分页幻灯片 每5秒向前移动幻灯片(并在到达最后一张幻灯片时返回到第一张幻灯片继续)。任何人都可以引导我朝着正确的方向前进吗?

    @FXML
public void slideshow(ActionEvent event) {
    // TODO Auto-generated method stub
    String[] photos = { "housestark.jpg", "housefrey.jpg", "housebar.jpg",
            "HouseBolton.jpg", "housegreyjoy.jpg", "houseaaryn.jpg",
            "houselannis.jpg", "housemart.jpg", "housereed.jpg",
            "housetully.jpg", "housetyrel.jpg", };
    Pagination p = new Pagination(photos.length);
    p.setPageFactory((Integer pageIndex) -> {
        return new ImageView(getClass().getResource(photos[pageIndex])
                .toExternalForm());
    });

    Stage stage = new Stage();
    stage.setScene(new Scene(p));
    stage.setX(1250);
    stage.setY(10);
    stage.setTitle("Slideshow");
    stage.setResizable(false);
    stage.show();
}

到目前为止这是我的代码!我很感激任何人都能给予的帮助吗?

1 个答案:

答案 0 :(得分:3)

这很简单。您所要做的就是创建一个每5秒运行一次的计时器,并在运行时移动页面索引。

public class SO extends Application {

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

    @Override
    public void start(Stage stage) {
        Pagination p = new Pagination(10);

        Timeline fiveSecondsWonder = new Timeline(new KeyFrame(Duration.seconds(5), event -> {
            int pos = (p.getCurrentPageIndex()+1) % p.getPageCount();
            p.setCurrentPageIndex(pos);
        }));
        fiveSecondsWonder.setCycleCount(Timeline.INDEFINITE);
        fiveSecondsWonder.play();

        stage.setScene(new Scene(p));
        stage.show();
    }
}

五秒钟的奇迹来自这里:JavaFX periodic background task