我试图获取MenuItem的名称,然后将Label文本设置为MenuButton中单击的MenuItem的名称。我怎样才能做到这一点? MenuItems从数据库中的字符串中获取id。
变量:
@FXML
private MenuButton projektAuswahl;
MenuItem item;
创建新的MenuItem:
ResultSet rs = stmt.executeQuery(sqlQuery);
while (rs.next()) {
item = new MenuItem(rs.getString(1));
item.setId(rs.getString(1));
projektAuswahl.getItems().add(item);
}
设置标签文字:
private void setProjectLabel() {
//projectnameLabel.setText(item.getText()); //not working..
}
如何识别单击哪个MenuItem?
答案 0 :(得分:1)
您还需要为onAction
event注册处理程序。对于每个MenuItem
保存每个文本的数据,这可能是一个新的,或者您可以访问event source以获取对MenuItem
的引用:
static MenuItem createMenuItem(String text, EventHandler<ActionEvent> handler) {
MenuItem result = new MenuItem(text);
result.setOnAction(handler);
return result;
}
private Label projectnameLabel;
private void setProjectLabel(ActionEvent event) {
MenuItem source = (MenuItem) event.getSource();
projectnameLabel.setText(source.getText());
}
@Override
public void start(Stage primaryStage) {
EventHandler<ActionEvent> handler = this::setProjectLabel;
MenuButton btn = new MenuButton("menu");
btn.getItems().addAll(createMenuItem("a", handler),
createMenuItem("b", handler),
createMenuItem("c", handler));
projectnameLabel = new Label();
VBox root = new VBox(10, btn, projectnameLabel);
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.show();
}
答案 1 :(得分:0)