环境
- Java 17
- JavaFX 21
创建Pagination组件
java
// 中页数
int pageCount = 20;
final Pagination pagination = new Pagination(pageCount);css属性
可以通过setStyle()方法进行设置
| 属性 | 描述 | 值类型 | 默认值 |
|---|---|---|---|
| -fx-max-page-indicator-count | 最大分页数 | int | 10 |
| -fx-arrows-visible | 背景颜色 | boolean | true |
| -fx-tooltip-visible | 背景颜色 | boolean | true |
| -fx-page-information-visible: | 是否显示底部文字 | boolean | true |
| -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);