我有一个类型为“播放列表”的可观察列表。
我有一个下拉菜单(连接到MenuButton
),列表中的每个项目都有一个MenuItem
(加上一些我硬编码的默认项目,它们不改变)。
对于 TableView
,我能够将数据链接到 ObservableList,并且表的行会根据列表的内容自动更新。
有没有办法对 MenuButton
及其 MenuItem
列表执行相同的操作?
最佳答案
我不确定是否有内置支持,但无论哪种方式,您都可以通过编写监听器来基于 ObservableList
为您想要的任何元素编写包装器。例如,
public class BoundMenuButton extends MenuButton {
ObservableList<MenuItem> items;
public BoundMenuButton(items) {
super(); // Not sure if needed
this.items = items;
// Listen for changes
items.addListener((ListChangeListener.Change<? extends MenuItem> change) -> {
updateItems();
});
}
public void updateItems() {
Platform.runLater( () -> {
// Do updates
});
}
}
这只是最基本的内容。您可以相当轻松地将其扩展为具有与 TableView
相同的方法。 (getItems()
、setItems()
等)。
P.S - 此代码未经测试,因为我当前无法访问编译器。
关于java - 基于可观察列表动态创建菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43837663/