如何使用Javafx从菜单按钮中删除菜单项
我正在尝试创建一个动态大小的菜单按钮 我正在设计一个图书馆程序。书放在书架上。在整个项目过程中,货架的数量可能会增加或减少。 我想制作一个菜单按钮,可以反映库中的书架-如果书架数量增加,菜单项集应该增加,如果书架数量减少,菜单项集应该减少。 这是我当前的代码。但是,它不会删除任何菜单项。此外,它还复制了已包含的所有菜单项如何使用Javafx从菜单按钮中删除菜单项,java,javafx,menuitem,Java,Javafx,Menuitem,我正在尝试创建一个动态大小的菜单按钮 我正在设计一个图书馆程序。书放在书架上。在整个项目过程中,货架的数量可能会增加或减少。 我想制作一个菜单按钮,可以反映库中的书架-如果书架数量增加,菜单项集应该增加,如果书架数量减少,菜单项集应该减少。 这是我当前的代码。但是,它不会删除任何菜单项。此外,它还复制了已包含的所有菜单项 previous code omitted… //the button “shelfBtn.getItems” is a MenuButton defined elsewher
previous code omitted…
//the button “shelfBtn.getItems” is a MenuButton defined elsewhere
Button btn = new Button(“Refresh”);
btn.setTranslateX(-20);
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
for(String shelf : shelfs){
MenuItem newShelf = new MenuItem(shelf);
newShelf.setOnAction(new EventHandler<ActionEvent() {
@Override
public void handle(ActionEvent event) {
// ignore this
shelfField.setText(shelf);
}
});
shelfBtn.getItems().add(newShelf);
}
}
});
remaining code omitted…
省略了以前的代码…
//按钮“shelfBtn.getItems”是在别处定义的菜单按钮
按钮btn=新按钮(“刷新”);
btn.setTranslateX(-20);
btn.setOnAction(新的EventHandler(){
@凌驾
公共无效句柄(ActionEvent事件){
用于(字符串工具架:shelfs){
MenuItem newShelf=新MenuItem(工具架);
newShelf.setOnAction(新事件处理程序只需修改项
可观察列表
:
@Override
public void start(Stage primaryStage) {
ListView<String> listView = new ListView<>();
for (int i = 0; i < 26; i++) {
listView.getItems().add(Character.toString((char) ('a'+i)));
}
listView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
MenuButton menuButton = new MenuButton();
Button btn = new Button("Modify");
btn.setOnAction((ActionEvent event) -> {
// create menu items from selection
menuButton.getItems().clear();
for (String s : listView.getSelectionModel().getSelectedItems()) {
menuButton.getItems().add(new MenuItem(s));
}
});
Scene scene = new Scene(new VBox(listView, menuButton, btn));
primaryStage.setScene(scene);
primaryStage.show();
}
Set<String> items = new shelfBtn.getItems().stream()
.map(MenuItem::getText)
.collect(Collectors.toCollection(HashSet::new));
for(String shelf : shelfs){
if (items.add(shelf)) {
...
}
}