JavaFX MenuItem,处理事件

JavaFX MenuItem,处理事件,javafx,javafx-11,Javafx,Javafx 11,我正在开发一个小应用程序,在创建菜单栏时遇到了一个问题。 这是我的开始方法: public void start(@SuppressWarnings("exports") Stage prymaryStage) throws Exception { // Stats menu Menu statsMenu = new Menu("Stats"); // PairName menu Menu

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

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();

    }
public void start(@SuppressWarnings(“导出”)Stage prymaryStage)引发异常{
//统计菜单
菜单状态菜单=新菜单(“统计”);
//PairName菜单
菜单配对菜单=新建菜单(“选择配对”);
//统计数据菜单项
MenuItem gStats=新MenuItem(“一般统计数据”);
//配对表
ArrayList pairNameList=DatabaseMethods.returnPairNameList();
//PairName项目(可能我必须更改)
for(字符串项:pairNameList){
pairNameMenu.getItems().add(新菜单项(项));
}
statsMenu.getItems().addAll(gStats,pairNameMenu);
//主菜单栏
菜单栏菜单栏=新建菜单栏();
menuBar.getMenus().addAll(statsMenu);
//边框窗格设置
BorderPane BorderPane=新的BorderPane();
边框窗格。设置顶部(菜单栏);
场景=新场景(边框窗格,1200800);
setTitle(“英语最小成对训练”);
prymaryStage.setScene(场景);
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 pairNameList=DatabaseMethods.returnPairNameList();
//PairName项目(可能我必须更改)
for(字符串项:pairNameList){
pairNameMenu.getItems().add(新菜单项(项));
}
我试图从ArrayList创建子菜单项。该数据从数据库中获取,并以ArrayList的形式返回。除了pairnamenu.getItems().add(new MenuItem(item)),我没有找到任何其他方法来执行菜单项;在for循环内部

现在我想处理点击的项目,但我不知道怎么做。我试过使用.setOnAction,但Eclipse说.add(新的MenuItem(item))不能在这种情况下使用,并建议使用.addAll。同样的情况下,Eclipse说这是一个错误,并建议使用.add 我试图在新菜单项(项)后添加此代码

.addEventHandler(新事件处理程序(){
公共无效句柄(偶数ActionEvent){
}
})
但它也不起作用

我对Java和JavaFX非常陌生,这是我的第一个项目,如果这是一个非常基本的问题,那么很抱歉


感谢您抽出时间

在创建所有项目并将其添加到
pairNameMenu
后,您必须循环查看
pairNameMenu
项目:

pairNameMenu.getItems().foreach((item) ->{
    item.addEventHandler.....
    ....
    ....
});
或者在创建
菜单项时执行以下操作:

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

创建所有项目并将其添加到
pairnamenu
后,必须循环查看
pairnamenu
项目:

pairNameMenu.getItems().foreach((item) ->{
    item.addEventHandler.....
    ....
    ....
});
或者在创建
菜单项时执行以下操作:

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

您好,我正在使用此代码,但我看不到系统,是否有任何错误?pairNameMenu.getItems().forEach((item)->{item.addEventHandler(MouseeEvent.MOUSE_单击,new EventHandler(){@Override public void handle(MouseeEvent事件){system.out.println(item);}});这是工作,最后,谢谢你!pairnamenu.getItems().forEach((item)->{item.setOnAction(e->System.out.println(item.getText());});您好,我正在使用此代码,但我看不到系统,是否有任何错误?pairNameMenu.getItems().forEach((item)->{item.addEventHandler(MouseeEvent.MOUSE_单击,new EventHandler(){@Override public void handle(MouseeEvent事件){system.out.println(item);}});这是工作,最后,谢谢你!pairnamenu.getItems().forEach((item)->{item.setOnAction(e->System.out.println(item.getText());});