在分页中实现页面工厂

分页将内容在页面之间划分,并允许用户在页面之间跳过或按顺序浏览内容。您可以通过实例化javafx.scene.control.Pagination类来创建分页。

示例

以下示例演示了如何创建分页并向其中添加数据。

import java.io.FileInputStream;
import java.io.InputStream;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Pagination;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class PaginationAction extends Application {
   public ImageView pageContent(int pageIndex){
      try{
         //创建图像视图
         ImageView imageView = new ImageView();
         //设置图像视图参数
         imageView.setFitWidth(590);
         imageView.setFitHeight(300);
         imageView.setPreserveRatio(true);
         String [] img = {"elephant.jpg", "cat.jpg", "boy.jpg", "car.jpg", "road.jpg"};
         for(int i = pageIndex; i<pageIndex+1; i++) {
            //创建图像对象
            InputStream stream = new FileInputStream("D:\\images\\"+img[i]);
            Image image = new Image(stream);
            imageView.setImage(image);
         }
         return imageView;
      }catch (Exception e) {}
      return null;
   }
   public void start(Stage stage) {
      //创建分页
      Pagination pagination = new Pagination();
      //设置页数
      pagination.setPageCount(5);
      //为各个页面创建内容
      pagination.setPageFactory((Integer pageIndex) -> pageContent(pageIndex));
      //创建一个锚定窗格以保留分页
      AnchorPane pane = new AnchorPane();
      AnchorPane.setTopAnchor(pagination, 5.0);
      AnchorPane.setRightAnchor(pagination, 5.0);
      AnchorPane.setBottomAnchor(pagination, 5.0);
      AnchorPane.setLeftAnchor(pagination, 5.0);
      pane.getChildren().addAll(pagination);
      //设置舞台
      Scene scene = new Scene(pane, 595, 330, Color.BEIGE);
      stage.setTitle("Pagination");
      stage.setScene(scene);
      stage.show();
   }
   public static void main(String args[]){
      launch(args);
   }
}

输出结果