2015-04-22 69 views
3

最近我一直在使用JavaFx,作爲一個初學者,並且印象非常深刻。此刻,我試圖將分頁幻燈片自動設置爲 每5秒向前移動一次幻燈片(並在返回最後一張幻燈片時返回第一張幻燈片以繼續)。任何人都可以在這裏指引我走向正確的方向嗎?JavaFX分頁自動幻燈片

@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(); 
} 

這是我的代碼到目前爲止!我會很感激任何人可以給予的幫助嗎?

回答

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