基于Observable List动态创建菜单项

时间:2017-05-07 23:08:32

标签: java javafx

我有一个可观察的播放列表类型列表。

我有一个下拉菜单(连接到MenuButton),列表中的每个项目都带有MenuItem(加上一些默认项目,我的硬编码不会更改)。

对于TableView,我能够将数据链接到ObservableList,并且表的行会根据List的内容自动更新。

有没有办法为MenuButton及其MenuItem列表做同样的事情?

1 个答案:

答案 0 :(得分:1)

我不确定是否有内置支持,但无论哪种方式,您都可以通过编写监听器为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()$email = $_SESSION['email']; $firstname = $user['first_name']; // Create database for user if not exists $DB_CON->exec("CREATE TABLE IF NOT EXISTS `".$email."` ( `id` INT NOT NULL AUTO_INCREMENT, `first_name` VARCHAR(100) NOT NULL DEFAULT '.$firstname.' PRIMARY KEY (`id`) )"); 等。)

P.S - 此代码未经测试,因为我目前无法访问编译器。