java - 如何修复我的 View 列表所选项目操作监听器中的空指针?

标签 java javafx

我正在尝试为在 ListView 节点上选择新项目时编写一个监听器。但问题是,当我运行该应用程序时,我得到了 NPE。通过查看它,我假设这可能会被抛出,因为运行时列表为空,但我不知道如何修复它。

更新1: 经过进一步调查,我正在使用 btn Action 监听器编写。当我尝试访问所选项目时,抛出了空指针异常。解决方法是用 try/catch 包装它,最终修复了它。将尝试与 viewList 类似的方法,看看它是否有效

更新2: try/catch(NPE) 解决方法适用于 viewList 操作监听器

第186行代码:ListView.getSelectionModel().selectedItemProperty().addListener(new...

listView = new ListView<BusinessCard>();
observableList = FXCollections.observableList(cardModel.getCards());
//cardModel.getCards() -> ArrayList<BusinessCards>

// ListView Listener, changes text fields for the selected B.C in ViewLsit
            listView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<BusinessCard>() {
                @Override
                public void changed(ObservableValue<? extends BusinessCard> arg0, BusinessCard oldval,BusinessCard newVal) {
                    if(newVal != null) setDataFields(newVal.getUI());       
                }
            });

最佳答案

当调用listView.getSelectionModel().selectedItemProperty()...并且 View 列表为空时,抛出null。据说这是文档中的一种行为

解决方法:

// ListView Listener, changes text fields for the selected B.C in ViewList

            listView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<BusinessCard>() {
                @Override
                public void changed(ObservableValue<? extends BusinessCard> arg0, BusinessCard oldval,BusinessCard newVal) {
                    if(newVal == null) return;
                    setDataFields(newVal.getUI());      
                }
            });

关于java - 如何修复我的 View 列表所选项目操作监听器中的空指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38103316/

相关文章:

java - OpenJDK 无法在 jar 中找到主类,而 OracleJDK 可以

java - 如何使用 Visual Studio Code 调试 java dropwizard 应用程序

java.lang.NoSuchFieldException : cacheList

java - 如何将 Java 对象的实例从 Python 传递到 Java 应用程序

java - toFront() 抛出 UnsupportedOperationException

JavaFX如何将文本写入textArea中的新行?

java - 将 fxml 场景保存为图像

java - 如果我搜索 VBox,则 scene.lookup() 返回 null

Java : In ConcurrentHashMap , 如果我更改 key ,为什么会有不同的输出

java - Java猜数字游戏(客户端和服务器)。输入非整数时,会发生SocketException错误