codenameone - 属性值更改时更新 CodenameOne sidemenu 命令
问题描述
我希望能够根据动态更新的 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() + ")
更改侦听器中放置标签,我会得到所需的行为。
请指出我正确的方向
解决方案
当我们将命令添加到侧边菜单或按钮时,我们会提取其值但不会自动反映更新,因为这可能会通过将命令绑定到组件而导致潜在的内存泄漏。解决方法是也修改原始的底层组件,例如:
Button ui = tb.findCommandComponent(cmd);
ui.setText(newLabelForCommand);
推荐阅读
- c# - 新插入的记录是否可用于同一事务中的后续 SQL 命令?
- autodesk-forge - 文件夹权限批量更新端点返回“访问被拒绝”错误
- c - 尝试扫描并打印结构中的字符串
- java - Swagger-Core 的对立面?
- spring-boot - 为什么我的 Spring Boot 单元测试不会在服务类中加载 @Value 属性?
- python - Python - 带有 STDIN 和 STDOUT 的子进程
- pine-script - 如何使用 Pine 脚本在监视列表中选择符号
- mongodb - 聚合管道中的可选中断
- mysql - 根用户拒绝通过 SQL Server LinkedServer 在 MySQL 中的特定列上插入
- powerbi - Power BI 表和 DAX - 导入和编写 DAX 或在源中执行所有操作