FXML中TextField引发NullPointerException问题求助
嘿,我来帮你揪出这个空指针异常的问题!结合你给出的代码片段,大概率是这几个常见的坑导致的:
ListView控件未正确注入
你的Controller实现了Initializable,但如果FXML文件里的ListView控件的fx:id和代码里的listView变量名大小写不匹配,或者FXML没有通过fx:controller正确关联到这个Controller类,那listView本身就是null。这时候调用listView.getSelectionModel()自然会触发空指针。赶紧去核对FXML里的控件ID和代码变量名,必须完全一致哦。未选中任何项就调用了toString()
代码里直接写了listView.getSelectionModel().getSelectedItem().toString()——如果用户还没在ListView里选择任何Book对象,getSelectedItem()会返回null,这时候强行调用toString()肯定炸锅。你得先做个非空判断:Book selectedBook = listView.getSelectionModel().getSelectedItem(); if (selectedBook == null) { // 可以加个提示,比如弹出对话框告诉用户先选一本书,或者直接返回 return; } String selected = selectedBook.toString();Controller实例化方式错误
如果你是自己手动new Controller()来创建实例,而不是让FXMLLoader自动加载并注入控件,那所有FXML绑定的控件(包括listView、lbTitle这些)都会是null。一定要确保是通过FXMLLoader加载FXML时自动初始化Controller,不要手动new。
另外,你可以加个简单的调试步骤:在OpenNewWindow方法开头加一行System.out.println("listView是否为null: " + (listView == null));,再看看getSelectedItem()的返回值,这样就能精准定位到底是哪一步出的问题啦。
内容的提问来源于stack exchange,提问作者NicoB

