Skip to content

已阅读

0%

JavaFx中Pagination的使用

Java JavaFX

创建分页组件,并修改样式

标签:
JavaFX
发布于 2024年4月18日
更新于 2024年4月18日

环境

  • Java 17
  • JavaFX 21

创建Pagination组件

java
// 中页数
int pageCount = 20;
final Pagination pagination = new Pagination(pageCount);

css属性

可以通过setStyle()方法进行设置

属性描述值类型默认值
-fx-max-page-indicator-count最大分页数int10
-fx-arrows-visible背景颜色booleantrue
-fx-tooltip-visible背景颜色booleantrue
-fx-page-information-visible:是否显示底部文字booleantrue
-fx-page-information-alignment对齐方式[ top,bottom,left,right]bottom

设置按钮样式

通过重新setSkin()方法进行设置,也可以通过如下方法获取其他组件并设置样式,具体结构请参考此处

java
// 按钮准备设置的尺寸
final int buttonSize = 40;

final PaginationSkin paginationSkin = new PaginationSkin(pagination);
// 隐藏掉所有文字后,获取按钮所在容器的父容器设置与按钮同样的告诉
  final StackPane pane = (StackPane) paginationSkin.getChildren().get(2);
  pane.prefHeightProperty().bind(pane.minHeightProperty());
  pane.setMinHeight(buttonSize);
  // 获取按钮容器
  final HBox box = (HBox) pane.getChildren().get(0);
  // 修改按钮布局
  box.setAlignment(Pos.BOTTOM_CENTER);
  // 设置按钮间距
  box.setSpacing(10);
  // 设置容器告诉
  box.prefHeightProperty().bind(box.minHeightProperty());
  box.setMinHeight(buttonSize);
  // 通过添加监听事件,再添加按钮是获取元素并修改其中的样式
  box.getChildren().addListener((ListChangeListener<Node>) nodes -> {
   while (nodes.next()) {
    if (nodes.wasAdded()) {
     for (Node addedNode : nodes.getAddedSubList()) {
      if (addedNode instanceof ButtonBase button) {
       button.setMinHeight(buttonSize);
       button.setMinWidth(buttonSize);
      }
     }
    }
   }
  });
  pagination.setSkin(paginationSkin);

Last updated: