1

好的,我在制作带有菜单项的菜单时遇到了麻烦。

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

@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上的文档,但我没有看到我的事件处理程序是空的,它似乎是与教程中的相同。

有人知道我在做什么错吗?

谢谢!

4

1 回答 1

1

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

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

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

.fxml要使文件和 Java 代码之间的连接起作用,必须做两件事。

  1. ventas在您的@FXMLJava 文件中添加注释
  2. 在 SceneBuilder 中定义控件的 (fx:id设置为)ventasventas
于 2013-05-26T08:57:25.150 回答