我一直在尝试构建一个树表并在FXML中定义cellValueFactories。
当我尝试这个时,我在堆栈跟踪中得到以下错误
Exception in thread "JavaFX Application Thread" java.lang.ClassCastException: javafx.scene.control.TreeTableColumn$CellDataFeatures cannot be cast to javafx.scene.control.TableColumn$CellDataFeatures
FXML编写如下
<TreeTableView prefHeight="500.0" prefWidth="600.0" fx:id="customerContractsTable">
<columns>
<TreeTableColumn prefWidth="116.0" text="Contract Number">
<cellValueFactory>
<PropertyValueFactory property=""/>
</cellValueFactory>
</TreeTableColumn>
</columns>
</TreeTableView>
我一直在努力寻找有关如何做到这一点的任何文档参考资料,而且我将完全空手而归。任何文件或帮助都会有很大的帮助。
答案 0 :(得分:8)
以下是FXML中的TreeTableView示例。
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.TreeTableView?>
<?import javafx.scene.control.TreeTableColumn?>
<?import javafx.scene.control.cell.TreeItemPropertyValueFactory?>
<TreeTableView>
<columnResizePolicy>
<TreeTableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
</columnResizePolicy>
<columns>
<TreeTableColumn text="Contract Number">
<cellValueFactory>
<TreeItemPropertyValueFactory property="contractNumber" />
</cellValueFactory>
</TreeTableColumn>
</columns>
</TreeTableView>
请参阅RT-35233。
答案 1 :(得分:0)
我认为这是一个错误,你应该记录它in the JavaFX issue tracker。
我认为错误是TreeTableView没有定义它自己的构建器来定义FXML中的列,所以它继承了TableViewBuilder的功能,它只将列定义为TableColumns,而不是TreeTableColumns。这意味着可以在FXML中定义直接TableView的TableColumns,但TreeTableViews的TableColumns不能。
与此同时,在代码中(在控制器的初始化器中)为TreeTables定义cellValueFactories而不是FXML。
答案 2 :(得分:0)
我有同样的问题,但随后检查并更改了导入。 我正在构建一个Dynamic Tableview并使用了&#34; Fix Imports&#34; Netbeans的功能,但我注意到,而不是导入: javafx.scene.control.TableColumn.CellDataFeatures; 它进口了 javafx.scene.control.TreeTableColumn.CellDataFeatures;
我手动纠正了导入,问题就消失了。