JavaFX MenuItem,处理事件

JavaFX MenuItem, handling the event

我正在开发一个小应用程序,但在创建菜单栏时遇到了问题。 这是我的启动方法:

public void start(@SuppressWarnings("exports") Stage prymaryStage) throws Exception {
        // Stats menu
        Menu statsMenu = new Menu("Stats");

        // PairName menu
        Menu pairNameMenu = new Menu("Choose pair");

        // Stats Menu items
        MenuItem gStats = new MenuItem("General stats");

        // Pair list
        ArrayList<String> pairNameList = DatabaseMethods.returnPairNameList();

        // PairName items (probably i will have to change)
        for (String item : pairNameList) {
            pairNameMenu.getItems().add(new MenuItem(item));
        }

        statsMenu.getItems().addAll(gStats, pairNameMenu);

        // Main menu bar
        MenuBar menuBar = new MenuBar();
        menuBar.getMenus().addAll(statsMenu);

        // BorderPane settings
        BorderPane borderPane = new BorderPane();
        borderPane.setTop(menuBar);

        Scene scene = new Scene(borderPane, 1200, 800);

        prymaryStage.setTitle("English minimal pair training");
        prymaryStage.setScene(scene);
        prymaryStage.show();

    }

我的问题出在这部分代码中:

        ArrayList<String> pairNameList = DatabaseMethods.returnPairNameList();

        // PairName items (probably i will have to change)
        for (String item : pairNameList) {
            pairNameMenu.getItems().add(new MenuItem(item));
        }

我试图从 ArrayList 创建子菜单的项目。此数据是从数据库中获取的,数据以 ArrayList 的形式返回。除了 pairNameMenu.getItems().add(new MenuItem(item)); 之外,我没有找到任何其他方法来处理菜单项。在 for 循环内。

现在我想处理项目中的点击,但我不知道该怎么做。我试过 .setOnAction 但 Eclipse 说 .add(new MenuItem(item)) 在这种情况下不能使用并推荐 .addAll 并且发生同样的情况,Eclipse 说这是一个错误并推荐 .add 我试图在 new MenuItem(item)

之后添加这段代码
.addEventHandler(new EventHandler<ActionEvent>() {
 public void handle(ActionEvent even) {
}
})

但是也没用。

我是 Java 和 JavaFX 的新手,这是我的第一个项目,如果这是一个非常基本的问题,我很抱歉。

感谢您的宝贵时间

在创建所有项目并将所有项目添加到 pairNameMenu 后,您必须遍历 pairNameMenu 个项目:

pairNameMenu.getItems().foreach((item) ->{
    item.addEventHandler.....
    ....
    ....
});

或者在创建 MenuItems 时执行如下操作:

for (String item : pairNameList) {
    MenuItem tempMenuItem = new MenuItem(item);
    tempMenuItem..addEventHandler.....
    ....
    ....
    pairNameMenu.getItems().add(tempMenuItem);
}