当前位置: 首页 > 知识库问答 >
问题:

如何防止树项选择?

司徒胤
2023-03-14

我正在使用TreeTableView(JavaFX8)。有一些树节点,必须禁用这些节点才能进行选择。我试过选择活动,但它不起作用。更多信息请找到下面的代码

treeTableView.getSelectionModel().selectedItemProperty().addListener(
                (observable, oldValue, newValue) ->
    {
        // utility node
        if(newValue.getValue() instanceof UtilityRoot )
        {
            return;
        }  
    }
);

如何阻止某些TreeItems进行任何鼠标和键盘选择?

共有1个答案

梁鸣
2023-03-14

您试图实现的功能是不起作用的,因为它只是添加了一个监听器,以便在所选项目发生更改时通知监听器,这在您的情况下已经太晚了,因为您希望阻止在调用监听器之前发生的选择。

默认情况下,您可以使用TreeTableView.GetSelectionModel().SetSelectionMode(selectionMode)指定是否要使用TreeTableView.GetSelectionModel().SetCellSelectionEnabled(enabled)选择SingleMultuple选择模式,以及是否要允许使用TreeTableView.GetSelectionModel().SetCellSelectionEnabled(enabled)选择单元格。

  • SelectionMode.single和单元格选择已启用:启用对表中单个单元格的选择。
  • SelectionMode.single和单元格选择禁用:启用表中的单行选择。
  • 选择模式。Multuple和单元格选择已启用:启用在多行中选择多个单元格。
  • 选择模式。Multuple和单元格选择禁用:启用对表中多行的选择。

如果它对您来说不够好,您将需要实现自己的TreeTableViewSelectionModel并使用SetSelectionModel(TreeTableView.TreeTableViewSelectionModel value) 设置它。

 类似资料:
  • 我有一个具有2级层次结构的TreeView控件。如果选择了第二级的项目,并且用户单击了另一个项目,我需要询问他是否确定要移动到另一个项目。如果他的答案是“否”,我需要阻止选择另一个TreeViewItem。 我试着这样做: 以一种有效的方式。但是,问题是我得到了两次OnMouseDown事件:第一级项目和第二级项目。例如,对于这棵树:俄罗斯-莫斯科-皮特美国-纽约-波士顿如果我单击波士顿,我将获得

  • 我创建了一个名为的简单库,其中有两个类。第一个是称为的Hilt模块 第二个是一个简单的类。 现在我想在我的一个应用程序中使用。所以我在应用程序中添加了依赖项。 所以我的问题是 为什么库模块的依赖项进入应用程序模块,而不使用的? 如何告诉Hilt“不要在外部库(gradle依赖项)中查找@provides?”除非我用标记模块

  • 我在视觉工作室中有一个特定的组合框问题。我使用它让用户在组合框的文本框部分中键入文本,这会立即启动 SQL 请求。结果应显示在组合框的下拉列表部分中。(DropDownStyle 设置为 DropDown) 但是只要下拉菜单打开,第一个项目就会被选中,它的整个文本就会粘贴到文本框中。因此,如果你开始在一行中写多个字母,第一个字母“消失”,因为第二个键入的字母替换了选定的文本。 我知道有一个类似的帖

  • 当我打开新项目的vscode时,它显示了我以前工作的多个选项卡,我该如何解决这个问题?

  • 我试图找出如何使列表中的最后一个flex项不扩展到容器的底部。它有一个contenteditable div,当有人输入多行文本时,我需要将其展开。 主要的灵活项目是一列中的3个div,标题栏宽度为100%,内容容器宽度为100%,有增长和收缩,页脚是灵活的,应该会导致内部容器收缩。 目前,当你在div.detail聊天输入中输入多行文本时,它确实会向上扩展,但也会向下推按钮。 这样地:

  • vue项目如何防止URL重定向 例如把 进行base64编码 拼接在地址后面,就能跳转到百度,如何设置白名单呢?是前端操作还是后端操作呀 希望大佬能帮忙解答一下