JavaFX 分页

news/2024/9/25 5:53:36/

分页控件用于浏览多个页面。 我们典型地使用对网页的分页控制,例如博客。 在博客页面的底部,我们可以看到一个矩形区域,作为一个数字列表来指示页面索引,以及一个下一个/上一个按钮来链接到下一个/上一个页面。

创建分页控件

分页控件由页面内容和页面导航区域组成。

创建具有不确定页计数和当前页索引等于零的分页控件

Pagination pagination1 = new Pagination();

要创建一个5页的分页控件,当前页索引等于零

Pagination pagination2 = new Pagination(5);

要创建一个5页的分页控件,当前所选索引等于2

Pagination pagination3 = new Pagination(5, 2);

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Pagination;
import javafx.scene.control.Hyperlink;
import javafx.scene.control.Label;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;public class Main extends Application {private Pagination pagination;public static void main(String[] args) throws Exception {launch(args);}public int itemsPerPage() {return 8;}public VBox createPage(int pageIndex) {VBox box = new VBox(5);int page = pageIndex * itemsPerPage();for (int i = page; i < page + itemsPerPage(); i++) {VBox element = new VBox();Hyperlink link = new Hyperlink("Item " + (i + 1));link.setVisited(true);Label text = new Label("Search results\nfor " + link.getText());element.getChildren().addAll(link, text);box.getChildren().add(element);}return box;}@Overridepublic void start(final Stage stage) throws Exception {pagination = new Pagination(28, 0);pagination.setStyle("-fx-border-color:red;");pagination.setPageFactory((Integer pageIndex) -> createPage(pageIndex));AnchorPane anchor = new AnchorPane();AnchorPane.setTopAnchor(pagination, 10.0);AnchorPane.setRightAnchor(pagination, 10.0);AnchorPane.setBottomAnchor(pagination, 10.0);AnchorPane.setLeftAnchor(pagination, 10.0);anchor.getChildren().addAll(pagination);Scene scene = new Scene(anchor);stage.setScene(scene);stage.setTitle("PaginationSample");stage.show();}
}

将分段文本添加到分页控件

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Pagination;
import javafx.scene.control.TextArea;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;public class Main extends Application {private Pagination pagination;final String[] textPages = new String[]{"this is a test 1","this is a test 2","this is a test 3","this is a test 4","this is a test 5","this is a test 6","this is a test 7","this is a test 8","this is a test 8",};public static void main(String[] args) throws Exception {launch(args);}public int itemsPerPage() {return 1;}public VBox createPage(int pageIndex) {VBox box = new VBox(5);int page = pageIndex * itemsPerPage();for (int i = page; i < page + itemsPerPage(); i++) {TextArea text = new TextArea(textPages[i]);text.setWrapText(true);box.getChildren().add(text);}return box;}@Overridepublic void start(final Stage stage) throws Exception {pagination = new Pagination(28, 0);pagination.setPageFactory((Integer pageIndex) -> {if (pageIndex >= textPages.length) {return null;} else {return createPage(pageIndex);}});AnchorPane anchor = new AnchorPane();AnchorPane.setTopAnchor(pagination, 10.0);AnchorPane.setRightAnchor(pagination, 10.0);AnchorPane.setBottomAnchor(pagination, 10.0);AnchorPane.setLeftAnchor(pagination, 10.0);anchor.getChildren().addAll(pagination);Scene scene = new Scene(anchor, 400, 250);stage.setScene(scene);stage.setTitle("PaginationSample");stage.show();}
}

添加未确定大小的内容

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Pagination;
import javafx.scene.control.Label;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.stage.Stage;public class Main extends Application {private Pagination pagination;String[] fonts = new String[]{};public static void main(String[] args) throws Exception {launch(args);}public int itemsPerPage() {return 15;}public VBox createPage(int pageIndex) {        VBox box = new VBox(5);int page = pageIndex * itemsPerPage();for (int i = page; i < page + itemsPerPage(); i++) {Label font = new Label(fonts[i]);box.getChildren().add(font);}return box;}@Overridepublic void start(final Stage stage) throws Exception {fonts = Font.getFamilies().toArray(fonts);pagination = new Pagination(fonts.length/itemsPerPage(), 0);pagination.setPageFactory((Integer pageIndex) -> createPage(pageIndex));AnchorPane anchor = new AnchorPane();AnchorPane.setTopAnchor(pagination, 10.0);AnchorPane.setRightAnchor(pagination, 10.0);AnchorPane.setBottomAnchor(pagination, 10.0);AnchorPane.setLeftAnchor(pagination, 10.0);anchor.getChildren().addAll(pagination);Scene scene = new Scene(anchor, 400, 450);stage.setScene(scene);stage.show();}
}


http://www.ppmy.cn/news/1470175.html

相关文章

Web前端大结局:揭秘四重境界、五大法则、六大技巧与七大未来趋势

Web前端大结局&#xff1a;揭秘四重境界、五大法则、六大技巧与七大未来趋势 在浩瀚无垠的互联网世界中&#xff0c;Web前端技术以其独特的魅力&#xff0c;吸引着无数开发者投身其中。今天&#xff0c;我们将一起揭开Web前端的大结局&#xff0c;深入探讨其四重境界、五大法则…

日志写入异常,数据库“Rms”的事务日志已满,原因为“LOG_BACKUP”(三)

当遇到“数据库‘dhtrms’的事务日志已满&#xff0c;原因为‘LOG_BACKUP’”错误时&#xff0c;这意味着事务日志已达到最大大小&#xff0c;并且需要备份才能释放空间。这通常发生在使用完整恢复模式的数据库中&#xff0c;因为日志不会自动截断。以下是解决此问题的步骤&…

【机器学习】第11章 神经网络与深度学习(重中之重)

一、概念 1.神经元模型 &#xff08;1&#xff09;神经网络的基本组成单位 &#xff08;2&#xff09;生物上&#xff0c;每个神经元通过树突接受来自其他被激活神经元的信息&#xff0c;通过轴突释放出来的化学递质改变当前神经元内的电位。当神经元内的电位累计到一个水平时…

数据链路层知识分享【计算机网络】【以太网帧 | MTU的影响 | ARP技术】

博客主页&#xff1a;花果山~程序猿-CSDN博客 文章分栏&#xff1a;Linux_花果山~程序猿的博客-CSDN博客 关注我一起学习&#xff0c;一起进步&#xff0c;一起探索编程的无限可能吧&#xff01;让我们一起努力&#xff0c;一起成长&#xff01; 目录 前文 一&#xff0c; 以…

【Redis】String的常用命令及图解String使用场景

本文将详细介绍 Redis String 类型的常见命令及其使用场景&#xff0c;包括缓存、计数器、共享会话、手机验证码、分布式锁等场景&#xff0c;并且配图和伪代码进一步方便理解和使用。 命令执行效果时间复杂度set key value [key value…]设置key的值是valueO(k),k是键个数get…

Linux之tar打包解包命令

Linux之tar打包解包命令 打包与压缩区别 打包&#xff0c;也称之为归档&#xff0c;指的是一个文件或目录的集合&#xff0c;而这个集合被存储在一个文件中。归档文件没有经过压缩&#xff0c;所占空间是其中所有文件和目录的总和。 压缩&#xff0c;将一个大文件通过压缩算法…

杂谈-Android和Ios的对比

在当前的智能手机市场中&#xff0c;Android和iOS两大操作系统占据了主导地位。它们各自拥有独特的优势和劣势&#xff0c;为用户提供了不同的使用体验和选择。以下是对Android和iOS系统优缺点的详细对比&#xff0c;旨在帮助用户更全面地了解两大系统。 一、Android系统 优点…

vue 中的样式

vue3中的样书 scoped 样式deep 样式slot 样式全局样式v-bind 绑定动态属性style module更多参考 理想的样式解决方案&#xff0c;期待达到以下目的&#xff1a; 样式方便复用 能轻易避免冲突&#xff0c;样式冲突往往难以定位 开发体验好&#xff0c;使用 scss 、less 等预处…