好的,我在使用菜单项制作菜单时遇到了问题。
我正在学习本教程(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上的文档但我没有看到我的事件处理程序是空的,它看起来与教程中的完全相同。
任何人都知道我做错了什么?
谢谢!
答案 0 :(得分:1)
你还没有告诉NPE在哪里,所以我猜这里:
ventas.setOnAction(new EventHandler<ActionEvent>() {
此外,我猜ventas
是您在.fxml
文件中定义的JavaFX控件。
.fxml
文件和Java代码之间的连接有两个必须完成的工作。
ventas
注释@FXML
fx:id
控件的ventas
(将其设置为ventas
)