Java 将菜单项添加到多个菜单
我目前正在用JavaFX8为一个图书馆(用于书籍)编写一个菜单栏。我想在几个菜单中添加一个菜单项。如果我这样做,输出是一个警告,说明此MenuItem已添加,并且在应用程序中未显示Book菜单 代码:Java 将菜单项添加到多个菜单,java,javafx,javafx-8,Java,Javafx,Javafx 8,我目前正在用JavaFX8为一个图书馆(用于书籍)编写一个菜单栏。我想在几个菜单中添加一个菜单项。如果我这样做,输出是一个警告,说明此MenuItem已添加,并且在应用程序中未显示Book菜单 代码: 提前谢谢 简单地说,之所以会发生这种情况,是因为您将一个节点放在了两个不同的父节点上(请参见两次使用的Books Alphabical): 不知道MenuItemsBooks按字母顺序、Encalphabetic、booksReview应该出现在哪里,因此它们只会添加到最后一个sortMenu 为
提前谢谢 简单地说,之所以会发生这种情况,是因为您将一个节点放在了两个不同的父节点上(请参见两次使用的
Books Alphabical
):
不知道MenuItemsBooks按字母顺序、Encalphabetic、booksReview
应该出现在哪里,因此它们只会添加到最后一个sortMenu
为什么会这样?javafxapi的构建使得每个节点
都有一个属性集合,包括一个仅为一个的父属性
解决方案是第二次创建它们,使它们具有唯一性,因为您希望使用它们两次
MenuItem booksAlphabeticalSort = new MenuItem("Books alphabetical");
MenuItem encAlphabeticalSort = new MenuItem("Encyclopedias alphabetical");
MenuItem booksReviewSort = new MenuItem("Books sorted by review");
sortMenu.getItems().addAll(booksAlphabeticalSort, encAlphabeticalSort, booksReviewSort);
bookMenu.getItems().addAll(addBook, booksAlphabetical, encAlphabetical, booksReview);
sortMenu.getItems().addAll(booksAlphabetical, encAlphabetical, booksReview);
MenuItem booksAlphabeticalSort = new MenuItem("Books alphabetical");
MenuItem encAlphabeticalSort = new MenuItem("Encyclopedias alphabetical");
MenuItem booksReviewSort = new MenuItem("Books sorted by review");
sortMenu.getItems().addAll(booksAlphabeticalSort, encAlphabeticalSort, booksReviewSort);