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);
}
我正在开发一个小应用程序,但在创建菜单栏时遇到了问题。 这是我的启动方法:
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);
}