问题标签 [treetableview]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1031 浏览

java - JavaFX 的 ListChangeListener.Change.getRemoved() 可以返回不连续的项目吗?

问题

当从 中删除项目时,会触发ObservableList一个更改事件getFrom(),其中给出了删除的位置并getRemoved()给出了已删除项目的列表。文档说:

getRemoved()方法返回已被替换或从列表中删除的元素列表。

它没有这样说明,但我认为它暗示项目列表是原始列表的连续子列表。我已经用这个假设写了很多代码,但是现在遇到了TreeTableView's selection model 的困难,它的行为不是那样的。

例子

以具有三个“节点”行的简单树表为例。如果我选择这三行...

选择了三行

...然后单击并仅选择中间行...

在此处输入图像描述

...触发的更改事件treeTableView.getSelectionModel().getSelectedItems()如下所示:

在单个更改事件中,它报告“节点 1”和“节点 3”已从selectedItems列表的索引 0 中删除。

我本来希望该Change对象有两个单独的删除事件,由next()调用分隔。第一次调用next()会告诉我“节点 1”在索引 0 处被删除,第二次调用next()会告诉我“节点 3”在索引 1 处被删除。但是不,我得到一个事件,两行都在一次。

问题

真的可以getRemoved()退回不连续的物品吗?这是我对列表更改事件如何工作的误解,还是其中的一个错误TreeTableView

通常我会犹豫归咎于标准库,但这不会是我在 JavaFX 中发现的第一个错误,所以这并非不可想象。


更新

如果我添加对 的调用setShowRoot(false),则行为会发生变化。我得到了我的期望,删除分为两部分:

另外,这是我的MCVE

0 投票
0 回答
302 浏览

javafx - JavaFX 快照所有内容树/表视图

我想将我的树表视图内容导出到 .png 文件。但是当我使用快照但快照只抓取屏幕上可见的表格视图时。我搜索了有关此问题的所有表格,但没有找到任何解决方案。可以给点建议。如何将表格的所有内容导出为 png(也可以是 pdf 或 xls 文件)

快照整个 TableView 对我没有帮助

0 投票
2 回答
1322 浏览

javafx-8 - TreeTableView 禁用父行中的任何单元格

如何在 treetableview 的父行中禁用任何可编辑的单元格?请查看图片并检查示例代码。如果行可扩展(根行或子根行),很快我想禁用行可编辑

这张图片是正确的 在此处输入图像描述

但这不正确 在此处输入图像描述

**示例代码**

只需运行它并双击根项目

make-individual-cell-editable-in-javafx-tableview 我检查了该解决方案适用于 tableview 但对于 treetaleview 不起作用。

0 投票
0 回答
511 浏览

javafx - 从 TableView/TreeTableView 复制并覆盖单元工厂

我正在寻找一种通用方式(即,可以应用于任意TableViewor )从/TreeTableView复制数据“如您所见” 。我发现了几篇关于如何从(这里这里)复制内容的帖子,但重要的部分“如你所见”是所有这些内容的问题。TableViewTreeTableViewTableView

我看到的所有解决方案都依赖于获取与每个单元格相关的数据(很容易做到),并调用.toString()它。问题是,当您将一种类型(比如说 a Long)存储为列中的实际数据,然后定义一个自定义单元工厂以将其显示为 aString时(这超出了您这样做的范围,我只想要一个方法适用于此类表视图):

那些基于将基础数据(在Long此处)转换为的方法String显然不起作用,因为它们将复制数字而不是日期(这是用户在表中看到的)。

可能的(设想的)解决方案:

  1. 如果我可以将手放在TableCell与每个表格单元格关联的对象上,我可以做到TableCell.getText(),我们就完成了。不幸的是,TableView不允许这样做(我错过了一种方法吗?)

  2. 我可以很容易地获得CellFactory与该列关联的内容,因此创建一个新的TableCell(与表视图中现有的相同):

    TableCell<T, ?> cell = column.getCellFactory().call(column);

    那么问题是没有办法(再次,我错过了吗?)强制 aTableCell调用该updateItem方法!我尝试使用commitEdit(T newValue),但它非常混乱:里面有检查,所以你需要制作整个东西 (column, row, table) Editable,然后startEdit先调用。

    2a. 所以唯一对我有用的解决方案是使用 Reflection 来调用 protected updateItem,这感觉有点脏:

    /li>

我将不胜感激任何评论,即如果这可以用更少的血来实现。或者可能表明我的解决方案存在一些我错过的问题。

这是完整的代码,以防有人想使用它(尽管它很丑:)

那么用法就很简单了:

谢谢!

0 投票
1 回答
1216 浏览

tableview - JavaFX 将表格/树形视图内容导出为 pdf 和 excel

我有一个包含很多列的抽象表(表或树表视图无关紧要)视图。但并非所有列都同时可见。现在我想做的是,当我将表格内容导出到 pdf/excel 时,读取每一行数据,但实际上在 javafx 中我们无法直接获取行和单元格数据。为此,我们必须使用行/单元工厂。但是在这种情况下,这个工厂只有在我们向表中添加数据时才会被调用。我可以读取每一行的表数据模型,但在这种情况下,我必须检查哪些列是可见的和不可见的,以及始终使用的数据模型,并调用数据模型的所需方法。这样做需要很多代码行,因为如前所述,我有很多列和嵌套列以及不同的数据模型。因此,在导出期间检查所有这些所需的大量代码行。但是,如果我可以读取行和行的单元格,我就不需要检查不可见的行和数据模型。只需读取当前行和单元格数据。所以我的问题是我该如何解决这个问题?你有什么建议吗?

有什么建议吗?

0 投票
1 回答
340 浏览

java - TreeTableView 选择在源更改后包含空值

基本值列表由(变化的)谓词过滤。被FilteredList映射到TreeItems,然后这个结果列表被用作根TreeItems 的孩子。

当在 上进行选择时TreeTableView,然后谓词更改,访问所选项目会导致NullPointerException.

在我看来,更改中包含的项目是null. 这个粗略的概念是否存在设计缺陷?

这不会发生在类TreeViewListView.

我尝试使用https://github.com/TomasMikula/EasyBind为映射生成 MCVE:

0 投票
1 回答
771 浏览

javafx - JavaFx TreeTableView 实时数据

问题 - 无法在 TreeTableView 中填充实时数据。数据来自外部来源,需要在 TreeTableView 中实时显示

下面是代码的简洁部分。能够使用节点创建树表视图。为了测试,我创建了一个随机数生成器并将其与表树视图字段绑定。不确定这是否是正确的方法。

希望我已经设法清楚地解释了这个问题。期待指导。

FXML:

控制器:

出于测试目的,我在 FXML 中添加了一个按钮,将以下代码链接到它并添加了一个随机数生成器来模拟我期望获得的实时数据。这个想法是在我按下开始按钮后,随着随机数生成值,最新列中的值应该显示该值。现在我没有将任何值传递给高和低列,因为它不适用于最新

0 投票
1 回答
303 浏览

javafx - javafx TreeTableView 没有得到更新

我花了几个小时来调查一个问题,但我无法理解它。我已经找到了这个链接那个链接,但即使我认为我遵循了那里的建议,我的 TreeTableView 也没有得到更新。

我有一个控制器,我在其中使用初始化方法来设置单元格和单元格值工厂:

在 refreshTreeTableViews() 中,我将几个项目添加到 TreeTableView。对于 TreeItemPropertyValueFactories 这工作正常,一切都得到正确呈现 TreeTableView 显示。但是,ShowFinancialBookingsCell() 所在的单元格最初不会被渲染。当我再次向下和向上滚动时,隐藏并再次出现的 TreeTableView 部分正确显示了 ShowFinancialBookingsCell()。

因此,我尝试在 refreshTreeTableViews()-Function 之后刷新 TreeTableView,但这并没有改变任何东西。

ShowFinancialBookingsCell 的代码是:

}

有人知道我在自定义单元格中做错了什么吗?其他单元格(具有 TreeItemPropertyValueFactory)很好地呈现。

0 投票
1 回答
2538 浏览

javafx - JavaFX TreeTableView 折叠时留下图标

我有一个TreeTableView每个节点都有一个图标的地方。当我展开树时,一切正常,但是当我折叠树时,不再可见项目的图标被留下。

行和文本被删除,但图标保持“自由浮动”。在屏幕截图中,您可以看到TreeTableView两次,一次是使用正确的文本展开,一次是折叠并仅显示剩余的图标。

带有正确展开的 TreeTableView 和损坏的折叠的屏幕截图

上面的屏幕截图是从以下最小示例创建的(您只需要添加自己的icon.png):

我已经在 Linux 上使用 OpenJDK 和 Oracle Java 8u92 并在 Windows 上使用 Oracle Java 8u92 进行了尝试。

0 投票
1 回答
1441 浏览

java - 在 JavaFX 中创建分层数据并将其添加到 TreeTableView

我刚开始编程,我正在用 Java 编写一个程序,用于使用 Single Transferable Vote 计算选票。我在一个 Excel 文件中有输入数据,如下所示:

这个

其中候选人的名字映射到a中它下面的数字,HashTable第2行下面的每一行从左到右代表一个选民的偏好。

我想添加名称和投票,TreeTableView看起来像这样:

这个.

每个候选者是他们第二个偏好的根,每个第二个偏好是第三个偏好的根,每个第三个偏好是第四个偏好的根,依此类推。

我正在使用该apache.poi库来使用 Excel 文件。我正在寻找有关如何表示工作表中的分层数据以及如何将其添加到TreeTabeView. 我怎么能这样做?

对不起,如果这是一个菜鸟问题。我对如何使用分层数据不是很熟悉。提前致谢!