切勿 将
@FXML初始化值设置为新值。
在您发布的代码中,您执行了 两次 ,而您根本不应该这样做。
FXMLLoader将在其实例化的组件层次结构中创建新项目,并将对这些新项目的引用注入到您的控制器中。如果随后将这些引用设置为新值,则除非在其中专门添加了新值,否则新值将永远不会包含在显示的组件层次结构中,这会破坏首先使用FXML的目的,因为它会忽略FXML中定义的内容。文件。
您应该拥有的是:
public class FooController { @FXML MenuButton menuButton; public void initialize() { menuButton.getItems().addAll( FXCollections.observableArrayList( new CheckMenuItem("T1"), new CheckMenuItem("T1C"), new CheckMenuItem("T2") ) ); }}还要注意,如果上述代码中的CheckMenuItems是静态列表,而不是动态列表,则只需在FXML文档中全部定义它们,而不用在代码中创建它们。
注意: 这是一个重复的问题,之前曾被问过(不是确切的问题,而是实质问题),但是我的Google技能无法挖掘出某些重复的问题。



