我有一个带有一些复选框和微调器的表单。它们都分配了ActionListeners \ ChangeListeners,因此每次更改某个元素时,程序都会启动一个 create()方法,该方法从整个表单中收集所有值并将它们放入对象中,可以稍后保存到光盘。
但是现在我正在尝试使程序从文件加载该对象并根据已加载的内容更新接口。这就是出现问题的地方。程序加载对象后,它会尝试更新表单的元素,但正如它更改第一个元素一样,ActionListener会被触发,它会从表单中收集所有值并覆盖之前加载的对象。
解决这个问题的好方法是什么?
现在我正在考虑在加载对象时创建一个全局变量来“关闭” create()方法(即创建一个停止动作侦听器的标志)。但我不确定这是不是一个好主意。
答案 0 :(得分:0)
而不是标志可能会想到创建一个名为FormState的枚举来表示表单的状态,例如阅读和编辑。您可以在保持值之前和之后切换表单的状态。
答案 1 :(得分:0)
通过添加一个私有布尔变量解决它,当更新接口时,该变量被更改为false。