javafx 表格列拖拉_JavaFX技巧22:“自动调整大小(树)”表列
javafx 表格列拖拉
JavaFX “缺少功能调查”中提到的“缺少功能”的第一件事就是能够自动调整表/树表中的列大小。 没错,没有公共API是正确的,但是当您密切关注时,您会注意到JavaFX内部一定有执行此操作的代码,因为用户可以通过双击分隔线自动调整列的大小。在该列与右侧的下一列之间。
但是像大多数人一样,我觉得这对我的代码还不够好。 我想要一个FlexGanttFX的API,该API允许用户自动调整甘特图内一列或所有列的大小。 因此,我搜索了隐藏在树表或树表皮肤某处(实际上不记得在哪里)的代码,并在我的类中进行了一些较小的修改以重新使用它。
以下是这项工作的结果。 它以TreeTableView而不是TableView为目标,但是使它适用于标准表很简单。 只需将所有TreeTableColumn出现替换为TableColumn即可 。 请注意,调整所有行的大小可能会对性能产生严重影响,因此您可能必须通过maxRows参数来限制要用于计算的行数 。
/*** This method will resize all columns in the tree table view to ensure that* the content of all cells will be completely visible. Note: this is a very* expensive operation and should only be used when the number of rows is* small.** @see #resizeColumn(TreeTableColumn, int)*/public final void resizeColumns() {resizeColumns(-1);}/*** This method will resize all columns in the tree table view to ensure that* the content of all cells will be completely visible. Note: this is a very* expensive operation and should only be used with a small number of rows.** @param maxRows* the maximum number of rows that will be considered for the* width calculations** @see #resizeColumn(TreeTableColumn, int)*/public final void resizeColumns(int maxRows) {for (TreeTableColumn<R, ?> column : getTreeTable().getColumns()) {resizeColumn(column, maxRows);}}/*** This method will resize the given column in the tree table view to ensure* that the content of the column cells will be completely visible. Note:* this is a very expensive operation and should only be used when the* number of rows is small.** @see #resizeColumn(TreeTableColumn, int)*/public final void resizeColumn(TreeTableColumn<R, ?> column) {resizeColumn(column, -1);}/*** This method will resize the given column in the tree table view to ensure* that the content of the column cells will be completely visible. Note:* this is a very expensive operation and should only be used when the* number of rows is small.** @see #resizeColumn(TreeTableColumn, int)*/public final void resizeColumn(TreeTableColumn<R, ?> tc, int maxRows) {final TreeTableColumn col = tc;List<?> items = getItems();if (items == null || items.isEmpty()) {return;}Callback cellFactory = tc.getCellFactory();if (cellFactory == null) {return;}TreeTableCell<R, ?> cell = (TreeTableCell<R, ?>) cellFactory.call(tc);if (cell == null) {return;}// set this property to tell the TableCell we want to know its actual// preferred width, not the width of the associated TableColumnBasecell.getProperties().put("deferToParentPrefWidth", Boolean.TRUE); //$NON-NLS-1$// determine cell paddingdouble padding = 10;Node n = cell.getSkin() == null ? null : cell.getSkin().getNode();if (n instanceof Region) {Region r = (Region) n;padding = r.snappedLeftInset() + r.snappedRightInset();}TreeTableRow<R> treeTableRow = new TreeTableRow<>();treeTableRow.updateTreeTableView(treeTableView);int rows = maxRows == -1 ? items.size(): Math.min(items.size(), maxRows);double maxWidth = 0;for (int row = 0; row < rows; row++) {treeTableRow.updateIndex(row);treeTableRow.updateTreeItem(treeTableView.getTreeItem(row));cell.updateTreeTableColumn(col);cell.updateTreeTableView(treeTableView);cell.updateTreeTableRow(treeTableRow);cell.updateIndex(row);if ((cell.getText() != null && !cell.getText().isEmpty())|| cell.getGraphic() != null) {getChildren().add(cell);cell.impl_processCSS(false);double w = cell.prefWidth(-1);maxWidth = Math.max(maxWidth, w);getChildren().remove(cell);}}// dispose of the cell to prevent it retaining listeners (see RT-31015)cell.updateIndex(-1);// RT-23486double widthMax = maxWidth + padding;if (treeTableView.getColumnResizePolicy() == TreeTableView.CONSTRAINED_RESIZE_POLICY) {widthMax = Math.max(widthMax, tc.getWidth());}tc.impl_setWidth(widthMax);}
翻译自: https://www.javacodegeeks.com/2015/12/javafx-tip-22-autosize-tree-table-columns.html
javafx 表格列拖拉
javafx 表格列拖拉_JavaFX技巧22:“自动调整大小(树)”表列相关推荐
- javafx如何带菜单_JavaFX技巧30:带有DropShadow的ScrollPane
javafx如何带菜单 最近,在我的一个项目中,我发现用户很难看到ScrollPane实例的内容当前是否已滚动. 一种更清晰的方法是在滚动窗格的顶部添加阴影. 这也是Google的Material D ...
- javafx查找子节点_JavaFX技巧29:使布局忽略不可见的节点
javafx查找子节点 在我仍在Swing中实现UI的时候,我曾经是MigLayout的忠实拥护者("一个布局管理者来统治所有这些,对吗Mikael?"). 我真正喜欢的功能之一是 ...
- javafx中css选择器_JavaFX技巧12:在CSS中定义图标
javafx中css选择器 当您是像我这样来自Swing的UI开发人员时,您很有可能仍在代码中直接设置图像/图标. 最可能是这样的: import javafx.scene.control.Label ...
- python制作表格的语句_python根据Excel自动生成创建表sql语句
1.Excel格式截图 2.配置文件脚本 # coding:utf-8 # 表英文名 table_name = '表英文名' # 表中文名 table_comments = '表中文名' # Exce ...
- JavaFX技巧22:“自动调整大小(树)”表列
JavaFX "缺少功能调查"中提到的"缺少功能"的第一件事就是能够自动调整表/树表中的列大小. 没错,没有公共API是正确的,但是当您密切关注时,您会注意到J ...
- 实现固定表头和表列的table组件
前端的table在设置overflow后横向.纵向滚动.但数据比较多时,为了查看方便,希望能在纵向滚动时固定表头,在横向滚动时在左边或右边固定特定表列,这是原生不支持的. 目录 实际效果 设计思路 普 ...
- mysql修改表名,列名,列类型,添加表列,删除表列
alter table test rename test1; --修改表名alter table test add column name varchar(10); --添加表列alter table ...
- excel一列求和_excel功能小技巧:自动求和的注意事项
编按:哈喽,大家好!在EXCEL里有个非常方便的按钮,叫做自动求和.不需要输入公式,直接一点,即可得出求和结果.由于它操作上的便利,所以深受小白喜爱.不过看着简单的自动求和按钮,实际上却藏着不少暗坑, ...
- Typora 中 MarkDown 表格列扩宽小技巧
来,看一张图: 不要在意表格内容 明显发现下面一个表格第一列太窄了,这儿我们因为一个 md 文件中有多个表格,就不能用统一样式的方法来扩宽列了,参考之前的博文:MarkDown 表格之调整宽度技巧 多 ...
最新文章
- 这个小学生毕业典礼被全世界围观:疫情之下开脑洞,《我的世界》还能这样玩!中国网友:作业写不完的我感到嫉妒...
- Java反斜线(\)路径与转义字符的小坑
- Guava中针对集合的 filter和过滤功能
- c 内嵌php 韩天峰,PHP-X系列教程之内置函数的使用示例
- 湖南大学计算机与通信学院研究生,湖南大学计算机与通信学院2010年硕士研究生招生学科...
- 高职信息安全比赛攻防思路_高职信息安全技术应用技能竞赛.doc
- 信息系统项目管理02——信息系统项目管理基础
- php中的try语句,PHP Try-catch 语句使用技巧
- 阿里云搭建 ftp 服务器
- 有关针式打印机和一体机的安装
- html怎么给图片加倒影,用CSS3实现图片倒影效果,同时给出兼容早期版本IE的方案...
- 求矩阵主对角线元素及副对角线元素之和
- React、Vue等前端项目彻底卸载ServiceWorker,亲测有效
- Android DES,AES,RSA加密实现
- Fastapi学习笔记(一)
- 图像分类数据集 (FASHION-MNIST)
- Java:实现Prim算法(附完整源码)
- 方便快捷!身份证OCR带你一秒录入
- 图像处理算法之图像暗角特效
- SIL软件在环学习笔记