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:“自动调整大小(树)”表列相关推荐

  1. javafx如何带菜单_JavaFX技巧30:带有DropShadow的ScrollPane

    javafx如何带菜单 最近,在我的一个项目中,我发现用户很难看到ScrollPane实例的内容当前是否已滚动. 一种更清晰的方法是在滚动窗格的顶部添加阴影. 这也是Google的Material D ...

  2. javafx查找子节点_JavaFX技巧29:使布局忽略不可见的节点

    javafx查找子节点 在我仍在Swing中实现UI的时候,我曾经是MigLayout的忠实拥护者("一个布局管理者来统治所有这些,对吗Mikael?"). 我真正喜欢的功能之一是 ...

  3. javafx中css选择器_JavaFX技巧12:在CSS中定义图标

    javafx中css选择器 当您是像我这样来自Swing的UI开发人员时,您很有可能仍在代码中直接设置图像/图标. 最可能是这样的: import javafx.scene.control.Label ...

  4. python制作表格的语句_python根据Excel自动生成创建表sql语句

    1.Excel格式截图 2.配置文件脚本 # coding:utf-8 # 表英文名 table_name = '表英文名' # 表中文名 table_comments = '表中文名' # Exce ...

  5. JavaFX技巧22:“自动调整大小(树)”表列

    JavaFX "缺少功能调查"中提到的"缺少功能"的第一件事就是能够自动调整表/树表中的列大小. 没错,没有公共API是正确的,但是当您密切关注时,您会注意到J ...

  6. 实现固定表头和表列的table组件

    前端的table在设置overflow后横向.纵向滚动.但数据比较多时,为了查看方便,希望能在纵向滚动时固定表头,在横向滚动时在左边或右边固定特定表列,这是原生不支持的. 目录 实际效果 设计思路 普 ...

  7. mysql修改表名,列名,列类型,添加表列,删除表列

    alter table test rename test1; --修改表名alter table test add column name varchar(10); --添加表列alter table ...

  8. excel一列求和_excel功能小技巧:自动求和的注意事项

    编按:哈喽,大家好!在EXCEL里有个非常方便的按钮,叫做自动求和.不需要输入公式,直接一点,即可得出求和结果.由于它操作上的便利,所以深受小白喜爱.不过看着简单的自动求和按钮,实际上却藏着不少暗坑, ...

  9. Typora 中 MarkDown 表格列扩宽小技巧

    来,看一张图: 不要在意表格内容 明显发现下面一个表格第一列太窄了,这儿我们因为一个 md 文件中有多个表格,就不能用统一样式的方法来扩宽列了,参考之前的博文:MarkDown 表格之调整宽度技巧 多 ...

最新文章

  1. 这个小学生毕业典礼被全世界围观:疫情之下开脑洞,《我的世界》还能这样玩!中国网友:作业写不完的我感到嫉妒...
  2. Java反斜线(\)路径与转义字符的小坑
  3. Guava中针对集合的 filter和过滤功能
  4. c 内嵌php 韩天峰,PHP-X系列教程之内置函数的使用示例
  5. 湖南大学计算机与通信学院研究生,湖南大学计算机与通信学院2010年硕士研究生招生学科...
  6. 高职信息安全比赛攻防思路_高职信息安全技术应用技能竞赛.doc
  7. 信息系统项目管理02——信息系统项目管理基础
  8. php中的try语句,PHP Try-catch 语句使用技巧
  9. 阿里云搭建 ftp 服务器
  10. 有关针式打印机和一体机的安装
  11. html怎么给图片加倒影,用CSS3实现图片倒影效果,同时给出兼容早期版本IE的方案...
  12. 求矩阵主对角线元素及副对角线元素之和
  13. React、Vue等前端项目彻底卸载ServiceWorker,亲测有效
  14. Android DES,AES,RSA加密实现
  15. Fastapi学习笔记(一)
  16. 图像分类数据集 (FASHION-MNIST)
  17. Java:实现Prim算法(附完整源码)
  18. 方便快捷!身份证OCR带你一秒录入
  19. 图像处理算法之图像暗角特效
  20. SIL软件在环学习笔记

热门文章

  1. P3694-邦邦的大合唱站队【状压dp】
  2. jzoj6297-世界第一的猛汉王【切比雪夫距离,扫描线】
  3. P1220-关路灯【区间dp】
  4. 【贪心】失意(jzoj 2318)
  5. 牛客网暑期ACM多校训练营(第五场)
  6. 10、oracle下PL/SQL编程基础
  7. Flowable学习笔记(二、BPMN 2.0-基础 )
  8. Spring Boot Redis Cluster 实战干货
  9. Maven精选系列--eclipse各种操作
  10. JSON Web Token (JWT),服务端信息传输安全解决方案