JavaFX MenuItem,处理事件



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

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我试图在新的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);
}

相关内容

  • 没有找到相关文章

最新更新