JavaFX中经常用到MenuButton组件,实现一个下拉的单选效果。而我们下拉数据的个数可能是不定的,那么怎么给所有MenuItem都添加监听呢?我们可以利用forEach来对MenuButton中所有MenuItem遍历,快速实现添加监听。
MenuButton mb = new MenuButton("请选择用户");
MenuItem mItem1 = new MenuItem("用户");
MenuItem mItem2 = new MenuItem("超级用户");
MenuItem mItem3 = new MenuItem("超级用户超级用户超级用户超级用户");
mb.getItems().addAll(mItem1,mItem2,mItem3);
mb.getItems().forEach(new Consumer<MenuItem>() {
@Override
public void accept(MenuItem menuItem) {
menuItem.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
mb.setText(menuItem.getText());
System.out.println(menuItem.getText());
}
});
}
});