JavaFX - 分页



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

Sample Pagination

在 JavaFX 中创建分页

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

  • Pagination() - 它将生成一个没有页面计数的分页控件,并且默认页面索引将为零。但是,我们也可以使用此默认构造函数,并稍后使用setPageCount()setCurrentPageIndex()方法设置这些属性。
  • Pagination(int pageCount) - 它将创建一个具有指定页面数的分页控件。
  • Pagination(int pageCount, int currentIndex) - 它使用给定的页面数和页面索引构造一个新的 Pagination 控件。

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

示例

以下 JavaFX 程序演示了如何在 JavaFX 应用程序中创建 Pagination。将此代码保存在名为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

定义当前索引页面

Pagination 类的构造函数之一接受两个参数,即页面计数和当前索引。每当我们使用此构造函数时,它将生成一个具有指定页面数和当前选定索引号的分页控件。

示例

在下面的示例中,我们正在创建一个当前选定索引号为 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
广告