我在javafx中的treeview显示的内容变小后不应该在那里

时间:2019-04-08 15:53:30

标签: java javafx treeview

我在javafx应用程序中使用树视图,今天我添加了拖放支持以重新排列树视图的元素。为此,我必须创建自己的CellFactory类,但是我的代码存在错误。 当我的树视图的内容变小时,树视图下应为空的区域仍包含不应包含的文本。

这是折叠前和折叠后我的树状视图的样子:

before collapsing the item

after collapsing the item

此博客文章的拖放功能给了我灵感 https://brianyoung.blog/2018/08/23/javafx-treeview-drag-drop/

在拥有自己的cellFactory类之前,我在树形视图的setCellFactory方法中具有一个lambda函数,并且该解决方案没有此问题。

在CellFactory类中,我重写了call方法。我认为这是我需要以某种方式刷新treeview的内容以摆脱残留文本的地方。

public class CellFactory implements Callback<TreeView<QuizElement>, TreeCell<QuizElement>> {
...

    @Override
    public TreeCell<QuizElement> call(TreeView<QuizElement> treeView) {
        TreeCell<QuizElement> cell = new TreeCell<QuizElement>() {

            @Override
            protected void updateItem(QuizElement item, boolean empty) {
                super.updateItem(item, empty);

                if (item == null) return;

                if (empty) {
                    setText("");
                } else {
                    textProperty().bind(item.getNameProperty());
                }
            }
        };

        cell.setOnDragDetected((MouseEvent event) -> dragDetected(event, cell));
        cell.setOnDragOver((DragEvent event) -> dragOver(event, cell));
        cell.setOnDragDropped((DragEvent event) -> drop(event, cell, treeView));
        cell.setOnDragDone((DragEvent event) -> clearDropLocation());

        return cell;
    }
...

在折叠后的图片中,我希望最后一个可打开元素下面的区域为白色。

0 个答案:

没有答案