【问题标题】:How to cancel selection in ListView?如何取消 ListView 中的选择?
【发布时间】:2014-11-11 18:29:31
【问题描述】:

我尝试根据条件取消 ListView 中的用户选择。我试图在 ListView 和 ListCell 中使用鼠标单击和鼠标按下事件,但它不起作用。我不明白为什么在选定项目属性更改后会发生 bu 事件。 如何取消用户选择?

【问题讨论】:

    标签: javafx javafx-8


    【解决方案1】:

    如果我理解正确,您希望阻止用户通过单击来选择项目。我进一步假设您尝试了这样的解决方案:

    listView.addEventHandler(MOUSE_CLICKED, click -> click.consume());
    

    这不会阻止执行其他点击处理程序。即使是这样,内部事件处理程序似乎也会在您的事件处理程序之前被触发,因为在执行您的处理程序之前已更改所选项目。

    您需要添加一个事件过滤器以防止任何事件处理程序被触发:

    listView.addEventFilter(MOUSE_CLICKED, click -> click.consume());
    

    【讨论】:

    • 这不起作用。在此事件发生之前已设置 selectedItemProperty。
    • 这行得通,但是这个事件也被触发了,然后滚动条被点击了。你知道解决方法吗?
    【解决方案2】:
        listView.getSelectionModel().clearSelection();
    

    【讨论】:

    • 有一个简短的解释通常比只有代码的答案更好。
    • 解决了我的问题,这正是我想要的。 +1
    猜你喜欢
    • 1970-01-01
    • 2015-10-19
    • 1970-01-01
    • 2013-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多