Javafx 简明教程

JavaFX - Pagination

Pagination 控件是一个 UI 组件,允许用户在内容的不同页面之间导航。例如,我们可以使用此功能显示搜索结果、文章、图像或任何其他需要多页的内容类型。一个典型的分页控件有一个页面导航区域、上一页按钮和下一页按钮,如下图所示 −

pagination

Creating a Pagination in JavaFX

在 JavaFX 中,分页控件是通过实例化名为 Pagination 的类创建的。此类属于包 javafx.scene.control 。此类的构造函数如下所示 −

  1. Pagination() − 它将生成一个没有页面计数的分页控件,默认页面索引为零。但是,我们也可以使用此默认构造函数,并使用 setPageCount()setCurrentPageIndex() 方法稍后设置这些属性。

  2. Pagination(int pageCount) − 它将创建具有指定页数的分页控件。

  3. Pagination(int pageCount, int currentIndex) − 使用给定的页面数和当前索引构建新的分页控件。

在 JavaFX 中创建分页时,我们的第一步是使用以上构造函数实例化 Pagination 类。接下来,定义一个布局窗格,例如通过将 Pagination 对象传递给其构造函数的 Vbox 或 Hbox。最后,设置场景和舞台在屏幕上显示分页控件。

Example

下面的 JavaFX 程序演示了如何在 JavaFX 应用程序中创建分页。将此代码保存到名为 PaginationJavafx.java 的文件中。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.Pagination;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.scene.Node;
import javafx.util.Callback;
import javafx.geometry.Pos;
public class PaginationJavafx extends Application {
   private Pagination paging;
   @Override
   public void start(Stage stage) {
      // instantiating Pagination class
      paging = new Pagination(5);
      // to change the page number
      paging.setPageFactory(new Callback <Integer, Node>() {
         @Override
         public Node call(Integer pageIndex) {
            return new Label("Page No." + (pageIndex + 1));
         }
      });
      // creating Vbox that will contain the pagination
	  VBox box = new VBox();
      box.getChildren().addAll(paging);
      box.setAlignment(Pos.CENTER);
      // creating scene and stage
      Scene scene = new Scene(box, 400, 300);
      stage.setScene(scene);
      stage.setTitle("Pagination in JavaFX");
      stage.show();
   }
   // to launch the application
   public static void main(String[] args) {
      launch(args);
   }
}

要从命令提示符编译并执行已保存的 Java 文件,请使用以下命令−

javac --module-path %PATH_TO_FX% --add-modules javafx.controls PaginationJavafx.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls PaginationJavafx

当我们执行上述代码时,它将生成以下输出。

pagination output

Defining Current Index Page

Pagination 类的其中一个构造函数接受两个参数,即页面数和当前索引。每当我们使用此构造函数时,它会生成一个包含指定页面数和当前所选索引号的分页控件。

Example

在下面的示例中,我们创建一个当前选定的索引号为 3 的分页控件。将此代码保存到名为 JavafxPagination.java 的文件中。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.Pagination;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.scene.Node;
import javafx.util.Callback;
import javafx.geometry.Pos;
public class JavafxPagination extends Application {
   private Pagination paging;
   @Override
   public void start(Stage stage) {
      // creating pagination with 10 pages and currently selected index as 3
      paging = new Pagination(10, 2);
      // to change the page number
      paging.setPageFactory(new Callback <Integer, Node>() {
         @Override
         public Node call(Integer pageIndex) {
            return new Label("Page No." + (pageIndex + 1));
         }
      });
      // creating Vbox that will contain the pagination
	  VBox box = new VBox();
      box.getChildren().addAll(paging);
      box.setAlignment(Pos.CENTER);
      // creating scene and stage
      Scene scene = new Scene(box, 400, 300);
      stage.setScene(scene);
      stage.setTitle("Pagination in JavaFX");
      stage.show();
   }
   // to launch the application
   public static void main(String[] args) {
      launch(args);
   }
}

通过使用以下命令从命令提示符编译并执行保存的 Java 文件 −

javac --module-path %PATH_TO_FX% --add-modules javafx.controls JavafxPagination.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls JavafxPagination

在执行上述代码时,它将生成以下输出。

pagination output2