加载控制器时,MenuItem上的NullPointer

时间:2013-05-26 02:59:24

标签: nullpointerexception javafx menuitem

好的,我在使用菜单项制作菜单时遇到了问题。

我正在学习本教程(http://docs.oracle.com/javafx/2/ui_controls/menu_controls.htm),但是当我运行它时,我得到一个nullpointer错误。我的代码如下所示:

@Override
public void initialize(URL fxmlFileLocation, ResourceBundle resources) {

    ventas.setOnAction(new EventHandler<ActionEvent>() {

        @Override
        public void handle(ActionEvent t) {
            FXMLLoader ventasloader;
            ventasloader = new FXMLLoader(getClass().getResource("VentasGUI.fxml"));
            Stage ventasstage = new Stage();
            AnchorPane ventas = null;
            try {
                ventas = (AnchorPane) ventasloader.load();
            } catch (IOException ex) {
                Logger.getLogger(PuntoDeVentaController.class.getName()).log(Level.SEVERE, null, ex);
            }
            Scene ventasscene = new Scene(ventas);
            ventasstage.setScene(ventasscene);
            ventasstage.setTitle("Venta");

            VentasGUIController controller = ventasloader.<VentasGUIController>getController();
            controller.setUser(userID);

            ventasstage.show();
        }

...但即使我只留下NetBeans自动添加的框架代码:

@Override
public void initialize(URL fxmlFileLocation, ResourceBundle resources) {

    ventas.setOnAction(new EventHandler<ActionEvent>() {

        @Override
        public void handle(ActionEvent t) {
            throw new UnsupportedOperationException("Not supported yet.");
        }

...而不是得到“不支持”我得到nullpointerexception。我查看了http://docs.oracle.com/javafx/2/api/javafx/scene/control/MenuItem.html上的文档但我没有看到我的事件处理程序是空的,它看起来与教程中的完全相同。

任何人都知道我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:1)

你还没有告诉NPE在哪里,所以我猜这里:

ventas.setOnAction(new EventHandler<ActionEvent>() {

此外,我猜ventas是您在.fxml文件中定义的JavaFX控件。

.fxml文件和Java代码之间的连接有两个必须完成的工作。

  1. 在Java文件中使用ventas注释@FXML
  2. 在SceneBuilder中定义fx:id控件的ventas(将其设置为ventas