有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

即使相同的处理程序正常工作,也会引发java空指针异常

我对java非常陌生。我正在尝试用JavaFX构建一个简单的应用程序,但是发生了一些非常奇怪的事情:我有两个几乎相同的处理程序,handleButtonActionhandleButtonAction2,还有两个标签,clickedselected。我有一个按钮。当我将此按钮设置为使用handleButtonAction时,一切正常。当我切换到handleButtonAction2时,我得到一个空指针异常。我真的无法理解这一点,因为就我的眼睛而言,两个操纵者做的几乎是同一件事

public class FXMLDocumentController implements Initializable {

    @FXML
    private Label clicked;
    private Label selected;

    @FXML
    private void handleButtonAction(ActionEvent event) {
        System.out.println("Text1");
        clicked.setText("Text2");
    }

    @FXML
    private void handleButtonAction2(ActionEvent event) {
        System.out.println("More Text1");
        selected.setText("More Text2");
    }


    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // TODO
    }    

}

任何人都能弄清楚发生了什么


共 (2) 个答案

  1. # 1 楼答案

    (代表问题作者发布自我回答)

    我真的认为上面的@FXML注释就足够了。谢谢你礼貌的回答和对我愚蠢的宽容

  2. # 2 楼答案

    您的FXMLDocumentController。所选实例必须为空。您可能忘记了初始化它,当您有类实例时,编译器或IDE通常不会警告您实例未初始化(或者至少我的实例未初始化)。如果你真的找不到错误,检查你的其他课程。也在这里发布其他类的代码。 编辑:我很愚蠢,没有意识到这一点,我相信你必须这样做:

    @FXML
    private Label clicked,selected;