我希望能够根据动态更新的ListProperty的大小来更改“边栏”菜单命令的标题。我试图通过changeListener做到这一点,但我无法使它正常工作。
Command cmdWishlist = tb.addMaterialCommandToRightSideMenu("Wishlist(" + Shop.getInstance().wishList.size() + ")", FontImage.MATERIAL_FAVORITE, e -> {
....
});
Shop.getInstance().wishList.addChangeListener(pl -> {
tb.revalidate();
});
但是,如果我打开另一个表格,然后查看侧面菜单,则我需要的更改会反映出来。我该如何工作?顺便说一句,如果我把它放在工具栏上,并在变更侦听器中用setText("Wishlist(" + Shop.getInstance().wishList.size() + ")
说,我得到了预期的行为。
请指出正确的方向
答案 0 :(得分:1)
当我们在侧面菜单或按钮中添加命令时,我们提取其值,但不会自动反映更新,因为通过将命令绑定到组件可能导致潜在的内存泄漏。解决方法是也修改原始基础组件,例如:
Button ui = tb.findCommandComponent(cmd);
ui.setText(newLabelForCommand);