尝试使用javafx将项分配给choicebox时调用TargetException
向我的选择框添加选项的简单尝试会导致尝试使用javafx将项分配给choicebox时调用TargetException,java,javafx,Java,Javafx,向我的选择框添加选项的简单尝试会导致InvocationTargetException。我真的不明白抛出此异常的原因,因此,一个解释和一个解决方案将是非常好的!以下是我在FXMLDocumentController类中的代码: public class FXMLDocumentController implements Initializable { @FXML private ChoiceBox<?> pilot; public FXMLDocument
InvocationTargetException
。我真的不明白抛出此异常的原因,因此,一个解释和一个解决方案将是非常好的!以下是我在FXMLDocumentController类中的代码:
public class FXMLDocumentController implements Initializable {
@FXML
private ChoiceBox<?> pilot;
public FXMLDocumentController(){
setMembersList();
}
private void setMembersList(){
List<String> list = new ArrayList<String>();
list.add("Item A");
list.add("Item B");
list.add("Item C");
ObservableList obList = FXCollections.observableList(list);
pilot.setItems(obList);
}
}
使用试错法,异常肯定会在
pilot.setItems(obList)行中抛出代码>当我去掉这行代码时,它毫无例外地启动 调用构造函数时,不会初始化您的FXML
-注入的ChoiceBox
,因此您将得到NullPointerException
(pilot
为null
)
相反,从initialize()
方法调用代码。我还会正确地键入您的选择框
和可观察列表
:
public class FXMLDocumentController {
@FXML
private ChoiceBox<String> pilot;
public void initialize(){
setMembersList();
}
private void setMembersList(){
List<String> list = new ArrayList<String>();
list.add("Item A");
list.add("Item B");
list.add("Item C");
ObservableList<String> obList = FXCollections.observableList(list);
pilot.setItems(obList);
}
}
公共类FXMLDocumentController{
@FXML
私人选择箱试点;
public void initialize(){
setMembersList();
}
私有void setMembersList(){
列表=新的ArrayList();
列表。添加(“A项”);
列表。添加(“B项”);
列表。添加(“C项”);
ObservableList obList=FXCollections.ObservableList(列表);
试点项目(义务);
}
}
从构造函数中删除选择框
对象(基本上是FXML文件中定义的每个对象)初始化,并将其放置在(最佳)初始化
方法中。是否可以添加堆栈跟踪?是否可以发布堆栈跟踪的其余部分?如果你读得足够深入,你就不需要“反复试验”来判断哪一行抛出了异常。谢谢你提供的有用的答案和额外的建议,完全解决了问题!:)
public class FXMLDocumentController {
@FXML
private ChoiceBox<String> pilot;
public void initialize(){
setMembersList();
}
private void setMembersList(){
List<String> list = new ArrayList<String>();
list.add("Item A");
list.add("Item B");
list.add("Item C");
ObservableList<String> obList = FXCollections.observableList(list);
pilot.setItems(obList);
}
}