Javafx treeview随机向视图添加额外的图标

时间:2018-01-01 10:45:15

标签: javafx javafx-8 javafx-2

我正在使用javafx treeview,我在树视图中添加了图标。 enter image description here

我使用以下代码将图标添加到treeitem。使用Jfeniox库作为材料设计图标。当我单击树项时,图标会随机出现在树视图列表的末尾,如图像中所示。

fileprivate var expandedIndexSet = Set<IndexPath>()

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    if expandedIndexSet.contains(indexPath) {
        let cell = tableView.dequeueReusableCell(withIdentifier: "CELL_EXPANDED", for: indexPath) as! CellExpanded
        return cell
    } else {
        let cell = tableView.dequeueReusableCell(withIdentifier: "CELL_COLLAPSED", for: indexPath) as! CellCollapsed
        return cell
    }
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    tableView.deselectRow(at: indexPath, animated: false)
    if expandedIndexSet.contains(indexPath) {
        expandedIndexSet.remove(indexPath)
    } else {
        expandedIndexSet.insert(indexPath)
    }
    tableView.reloadRows(at: [indexPath], with: .fade)
}

1 个答案:

答案 0 :(得分:2)

在单元格的updateItem方法中,如果单元格为空或项目不是graphic的实例,则不会将null属性设置为Project 。由于可以将项目重新分配给单元格,因此需要执行此操作才能从单元格中删除图标:

@Override
public void updateItem(final LeafItem item, final boolean empty) {
    super.updateItem(item, empty);

    setText(null);
    setTooltip(null);
    setContextMenu(null);
    setGraphic(null);

    ...