【问题标题】:How to get TableHeaderRow from TableView nowadays in JavaFX?现在如何在 JavaFX 中从 TableView 获取 TableHeaderRow?
【发布时间】:2016-12-07 17:15:30
【问题描述】:

我在很多地方看到了如何使用代码获取表头的示例

TableHeaderRow header = (TableHeaderRow) tableView.lookup("TableHeaderRow");

喜欢这里:How to prevent TableView from doing TableColumn re-order in javaFX 8?

但此代码为我返回 null

那么如何联系TableHeaderRow

【问题讨论】:

    标签: java javafx tableview


    【解决方案1】:

    TableHeaderRow 是由 Skin 创建的,而默认的 Skin 在应用 css 之前不会创建。

    您可以在将TableView 添加到Scene 后调用applyCss,并在此调用后访问TableHeaderRow

    或者,监听Skin 中的更改,并在设置皮肤后执行该代码。

    此外,我建议使用TableViewSkinBase.getTableHeaderRow 来检索标题行,而不是使用lookup(无论如何您都在使用com.sun 包)。

    tableView.skinProperty().addListener((a, b, newSkin) -> {
        TableHeaderRow headerRow = ((TableViewSkinBase) newSkin).getTableHeaderRow();
        ...
    });
    

    【讨论】:

    • 如果我没记错的话 getTableHeaderRow 方法在 JavaFX11 中不再可见
    【解决方案2】:

    lookup("TableHeaderRow");有效,但它需要在表格呈现后调用,否则它将返回 null

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-24
      相关资源
      最近更新 更多