java - 添加用于取消 ListView 中选择的监听器 (JavaFX)

标签 java listview javafx javafx-8

现在我正在练习JavaFX。我有一个关于 ListView 的问题。我可以为 ListView 的多个选择创建一个监听器。但是,当我取消选择时,我创建的监听器不会反射(reflect)取消。我怎样才能让听众反射(reflect)这一点?以下是我制作的监听器。

ListView<String> lv = new ListView<>(FXCollections.observableArrayList(stringArray));  // stringArray is an array that I made.

lv.getSelectionModel().selectedItemProperty().addListener(ch -> {
        System.out.println("size: " + lv.getSelectionModel().getSelectedIndices().size());
    });

最佳答案

要在启用多个选择时更改选择,请将 ListChangeListener 添加到 selectedItems 列表(注意 selectedItems,而不是 selectedItem ):

lv.getSelectionModel().getSelectedItems().addListener(
    (ListChangeListener.Change<? extends String> ch) -> {
        System.out.println("size: " + lv.getSelectionModel().getSelectedIndices().size());
    }
);

请注意,如果您对空选择感兴趣,则可以这样做

Bindings.isEmpty(lv.getSelectionModel().getSelectedItems()).addListener(
    (obs, selectionWasEmpty, selectionIsNowEmpty) -> {
        if (selectionIsNowEmpty) {
            System.out.println("Nothing is selected");
        } else {
            System.out.println("Something is selected");
        }
    }
);

关于java - 添加用于取消 ListView 中选择的监听器 (JavaFX),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41448986/

相关文章:

java - 如何使用Android App的ListView生成游戏日志列表?

Android:带 CheckBox 的 ListView,从 SQLite 数据库填充不太工作

JavaFx 和内存消耗

java - 使用maven部署javafx hsqldb项目

java - 使用java解析XML文件-空指针异常

java - 使用new()运算符创建对象是多态吗?

android - 为什么我的 SwipeRefreshLayout 中的 ListView 不显示 Android 上的最后一个元素?

java - Apache Lucene createFullTextQuery 返回匹配的空对象

java - 嵌套类中对象的数组

javafx - Java 3D 到 JavaFX 8 的转换