2017-05-07 37 views
0

菜单项我有一个类型的播放列表的可观察名单。动态地创建基于可观察名单

我有一个下拉菜单(连接到MenuButton)与MenuItem列表中的每个项目(加上几个默认项目我硬代码不会改变)。

对于TableView,我能够将数据链接到一个ObservableList,他们和表格中的行自动更新基于该列表的内容。

有没有办法做一个MenuButton和其MenuItem的名单是一回事吗?

回答

1

我不确定是否有内置的支持,但无论哪种方式,您都可以通过编写一个监听器来为基于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 - 此代码是未经测试,因为我没有获得一个编译器目前。

+0

酷,我要去给这个一杆。我会让你知道它是怎么回事,谢谢! – JoshuaD

+0

@JoshuaD没有问题,让我知道如果你需要任何更多的帮助:) – Chris