Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试使用javafx将项分配给choicebox时调用TargetException_Java_Javafx - Fatal编程技术网

尝试使用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);
    }
}