小编sem*_*Tex的帖子

以编程方式编辑TreeView/TreeItem

编辑#2:因为它看起来像一个bug我已经在javaFx-jira中发布了一个错误报告.您必须拥有一个帐户才能访问该问题.如果有新信息,我会保持这篇文章是最新的.

原帖: 我有一个带按钮和TreeView的简单UI.如果按下按钮,则应该在TreeView中添加一个新项目.该项目一出现在树中就应该可以编辑.

import javafx.fxml.FXML;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.scene.control.cell.TextFieldTreeCell;
import javafx.util.converter.DefaultStringConverter;

public class ClientController {

    @FXML
    private TreeView<String> tree;

    public void initialize() {
        tree.setEditable(true);
        tree.setCellFactory(p -> new TextFieldTreeCell<>(new DefaultStringConverter()));

        TreeItem<String> root = new TreeItem<>();
        root.setValue("Items");
        root.setExpanded(true);

        tree.setRoot(root);
    }

    @FXML
    public void createItem() {
        TreeItem<String> newItem = new TreeItem<>();
        newItem.setValue("Item " + tree.getExpandedItemCount());

        tree.getRoot().getChildren().add(newItem);
        tree.requestFocus();
        tree.getSelectionModel().select(newItem);
        tree.edit(newItem);
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用的CellFactory是JavaFX api的一部分.

如果我查看api文档(TreeView#edit),我的网站上没什么可做的.

我通过谷歌找到类似的例子很多这样为每个TreeItem上下文菜单.有用,但不完全是我想要的,现在.

如果我选择/双击UI中的项目,我可以编辑任何以前创建的和现有的TreeItem.我错过了什么吗?

编辑#1:

如果createItem方法更改为以下代码:

@FXML
public void createItem() …
Run Code Online (Sandbox Code Playgroud)

java treeview javafx-8

3
推荐指数
2
解决办法
2583
查看次数

标签 统计

java ×1

javafx-8 ×1

treeview ×1