情况是我有一个带MenuItems的MenuBar。那些MenuItem都有命令。这些是组织者命令。它们用于在单击命令时组织面板的内容。以下是其中一个示例:
public class OrganizeByCategory implements Command{
private RuleListPanel theRulesList;
public OrganizeByCategory(RuleListPanel rlp)
{
theRulesList = rlp;
}
@Override
public void execute() {
theRulesList.organizedDrools.clear();
theRulesList.populateByCategory();
}
}
我遇到的问题是,执行此命令时,面板内容不会更新。 clear命令正确执行,因为内容会立即消失。如果我进入调试模式,我可以逐步执行populateByCategory()中的代码。每一行都会触发,一切都按照我的预期进行,所有对象都以适当的值结束。但是,面板不会在浏览器中更新。我非常有信心这个方法本身可以工作,因为当面板第一次加载并且然后工作时会触发它。
我不确定我在这里做错了什么。我应该以某种方式使用onClick监听器吗?如果是这样,为什么不能像Command一样通过MenuItem构造函数传递onClick侦听器?
答案 0 :(得分:0)
我在这里遇到的问题是由于对面板的天真理解。我的填充方法每次都实例化一个全新的面板,然后通过引用它们来存储它们的类字段来链接它们。事实证明,这不起作用。一个人需要保留一个对象的原始实例。在面板的情况下,您应该使用panel.clear()将面板重置为干净状态。我从实例化新面板开始的所有方法现在都以清除开始,我只需在构造函数中实例化一次面板。