动态创建时如何知道点击了哪个menuItem?

问题描述 投票:0回答:1

这是我的观点:

public class AdminPage extends VBox {
    public AdminPage() {
        Menu menu = new Menu("Optional");
        int i;
        ArrayList<String> items = new ArrayList<>();
        items.add("Product");
        items.add("Profile");
        items.add("Home");

        for (i = 0; i < items.size(); i++) {
            menu.getItems().add(new MenuItem(items.get(i)));
        }
        MenuBar menuBar = new MenuBar();
        menuBar.getMenus().add(menu);

        this.getChildren().addAll(menuBar);
        this.setAlignment(Pos.TOP_LEFT);
    }
}

我想编写控制器,但问题是我如何知道点击了哪个项目。

菜单是这样的:

Optional
----------
Product
Home

如果我点击产品,我想打开另一个表格。我认为这是通过点击操作完成的。

java javafx
1个回答
0
投票

只需在创建每个菜单项时为其创建一个处理程序即可:

    for (String item : items) {
        MenuItem menuItem = new MenuItem(item);
        menuItem.setOnAction(e -> {
            // do whatever you need here, e.g.
            System.out.println("You selected " + item);
        });     
        menu.getItems().add(menuItem);
    }
© www.soinside.com 2019 - 2024. All rights reserved.