TreeTableColumn的FXML cellValueFactory

时间:2014-07-08 20:37:29

标签: java-8 javafx-8 fxml

我一直在尝试构建一个树表并在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>

我一直在努力寻找有关如何做到这一点的任何文档参考资料,而且我将完全空手而归。任何文件或帮助都会有很大的帮助。

3 个答案:

答案 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;

我手动纠正了导入,问题就消失了。