gpt4 book ai didi

checkbox - 带有复选框和上下文菜单的 JavaFx TreeView

转载 作者:行者123 更新时间:2023-12-02 01:07:12 25 4
gpt4 key购买 nike

在教程中http://docs.oracle.com/javafx/2/ui_controls/tree-view.htm它解释了如何使用 ContextMenu 或 CheckBox 创建 TreeView。

但是可以两者兼得吗?

当我第一次复制粘贴代码时,我了解到我只能拥有一个 setCellFactory,因为它们会互相覆盖。

    // the following two setCellFactory are copied from the tutorial

// this create TreeCell with ContextMenu
treeView.setCellFactory(new Callback<TreeView<String>,TreeCell<String>>(){
@Override
public TreeCell<String> call(TreeView<String> p) {
return new TextFieldTreeCellImpl();
//the class TextFieldTreeCellImp is a TreeCell with ContextMenu
}
});

// this create TreeCell with CheckBox
tree.setCellFactory(CheckBoxTreeCell.<String>forTreeView());

然后我尝试用 CheckBoxTreeCell 替换 TreeCell

    //class TextFieldTreeCellImpl extends TreeCell<String> {
class TextFieldTreeCellImpl extends CheckBoxTreeCell<String> {
...
//TreeItem newTag = new TreeItem<String>("New tag");
CheckBoxTreeItem newTag = new CheckBoxTreeItem<String>("New tag");

但复选框没有出现。它仍然是一个普通的 TreeView 。

最佳答案

我认为获得带有 CheckBoxesContextMenuTreeView 的最快方法是在其中添加 ContextMenu工厂回调:

treeView.setCellFactory(new Callback<TreeView<String>,TreeCell<String>>() {

@Override
public TreeCell<String> call(TreeView<String> param) {
TreeCell<String> cell = CheckBoxTreeCell.<String>forTreeView().call(param);
ContextMenu menu = new ContextMenu();
MenuItem item1 = new MenuItem("Item 1");
MenuItem item2 = new MenuItem("Item 2");

EventHandler<ActionEvent> eh = new EventHandler<ActionEvent>() {

@Override
public void handle(ActionEvent event) {
System.out.println("Item '" + event.getSource() +
"' of cell '" + cell + "' was clicked.");
}
};

item1.setOnAction(eh);
item2.setOnAction(eh);
menu.getItems().add(item1);
menu.getItems().add(item2);
cell.setContextMenu(menu);
return cell;
}
});

我将通常的TreeCell 工厂称为CheckBoxes。但是,在返回单元格之前,我添加了 ContextMenu

使用EventHandler,您可以指定相应项目的点击行为。

如果您还有其他问题或者这不能令人满意地解决您的问题,请随时与我联系。

关于checkbox - 带有复选框和上下文菜单的 JavaFx TreeView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29159182/

25 4 0