首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JavaFX TreeView:删除展开/折叠按钮(公开节点)&功能

JavaFX TreeView:删除展开/折叠按钮(公开节点)&功能
EN

Stack Overflow用户
提问于 2015-01-07 21:30:09
回答 2查看 5.3K关注 0票数 0

我想要一个TreeView,它的所有子程序都是永久展开的,我不希望用户能够展开或折叠任何一个子级。

要做到这一点,我发现我需要做以下工作:

即使图标不再可见,它仍然可以点击。我看不出有什么方法可以过滤它;我只看到了在事实发生后才能对它作出反应的方法。

此外,如果我缺少任何其他我需要做的,以确保这个功能,请让我知道。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-08 00:39:03

我觉得很傻。我想这主要是因为不知道那该死的箭是怎么回事。很明显是disclosureNode?也许这是常识。

在自定义的TreeCell中,我所做的就是在updateItem方法中添加这一行:

代码语言:javascript
运行
复制
setDisclosureNode(null);
票数 5
EN

Stack Overflow用户

发布于 2015-01-08 00:27:02

避免修改皮肤或默认行为的解决方案更简单,如果我们在发出单击之前捕获它们,并使用正确的单击。

为此,我们可以使用一个EventDispatcher来过滤鼠标按下的鼠标和右击箭头,这些箭头是StackPane节点:

代码语言:javascript
运行
复制
class CellEventDispatcher implements EventDispatcher {

    private final EventDispatcher original;

    public CellEventDispatcher(EventDispatcher original) {
        this.original = original;
    }

    @Override
    public Event dispatchEvent(Event event, EventDispatchChain tail) {
        if (event.getEventType().equals(MouseEvent.MOUSE_PRESSED) || 
             event.getEventType().equals(ContextMenuEvent.ANY)){
            event.consume();
        }
        if(event instanceof KeyEvent && event.getEventType().equals(KeyEvent.KEY_PRESSED)){
            if((((KeyEvent)event).getCode().equals(KeyCode.LEFT) || 
                 ((KeyEvent)event).getCode().equals(KeyCode.RIGHT))){
                event.consume();
            }
        }
        return original.dispatchEvent(event, tail);
    }
}

现在,我们将自定义调度程序应用于树视图:

代码语言:javascript
运行
复制
@Override
public void start(Stage primaryStage) {
    TreeView<String> tree = new TreeView<>();
    ...
    EventDispatcher treeOriginal = tree.getEventDispatcher();
    tree.setEventDispatcher(new CellEventDispatcher(treeOriginal));

    Scene scene = new Scene(tree);
    primaryStage.setScene(scene);
    primaryStage.show(); 
}

这将消耗对树上箭头的任何单击(左或右)。

编辑

添加到events类中的情况是,用户使用键盘遍历树视图,使用箭头LEFTRIGHT使用折叠/展开事件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27828982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档