自定义TreeItems上的自定义上下文菜单

时间:2015-07-30 13:52:55

标签: treeview contextmenu javafx-8

我的域模型由需要在树视图中列出的多种类型的对象组成,我们将它们称为A和B.当在树视图中选择时,这些类型中的每一种都需要执行不同的操作。 我所做的就是:

为他们两个人创建了一个接口来实现:

public interface ITVItem
{
    public String toString();
    public void HandleClick();
}

public class A implements ITVItem
{
    @Override
    public void HandleClick()
    {
        //Do something      
    }

    @Override
    public String toString()
    {
        return "Item type A";
    }
}

public class B implements ITVItem
    {
        @Override
        public void HandleClick()
        {
            //Do something different
        }

        @Override
        public String toString()
        {
            return "Item type B";
        }
    }

树形视图的填充方式如下:

TreeItem<ITVItem> tvItem= new TreeItem<ITVItem> (new A());
rootNode.getChildren().add(target);
treeView.setRoot(rootNode);

现在,当用户点击一个项目时,我会像这样处理它:

   @FXML
    private void SelectionChanged(MouseEvent event)
    {
        Node node = event.getPickResult().getIntersectedNode();
        // Accept clicks only on node cells, and not on empty spaces of the TreeView
        if (node instanceof Text || (node instanceof TreeCell && ((TreeCell) node).getText() != null))
        {
            tVMain.getSelectionModel().getSelectedItem());
            ITVItem tvItem = ((ITVItem) ((TreeItem) tVMain.getSelectionModel().getSelectedItem()).getValue());
            tvItem.HandleClick();
        }

    }

接下来我需要的是为用户右键单击时显示每个域对象类型(A和B)的自定义上下文菜单。我该怎么做?

0 个答案:

没有答案