Java 使用ActionListener从加载的对象更新表单元素
我有一个带有复选框和微调器的表单。它们都有分配给它们的ActionListeners\ChangeListeners,因此每次更改某些元素时,程序都会启动一个create()方法,该方法收集整个表单中的所有值,并将其放入object中,该对象可在以后保存到光盘中 但现在我正试图让程序从文件中加载该对象,并根据加载的内容更新接口。这就是问题所在。程序加载对象后,会尝试更新表单的元素,但正如它更改第一个元素一样,会触发ActionListener,它会收集表单中的所有值,并覆盖以前加载的对象 解决这个问题的好办法是什么Java 使用ActionListener从加载的对象更新表单元素,java,user-interface,Java,User Interface,我有一个带有复选框和微调器的表单。它们都有分配给它们的ActionListeners\ChangeListeners,因此每次更改某些元素时,程序都会启动一个create()方法,该方法收集整个表单中的所有值,并将其放入object中,该对象可在以后保存到光盘中 但现在我正试图让程序从文件中加载该对象,并根据加载的内容更新接口。这就是问题所在。程序加载对象后,会尝试更新表单的元素,但正如它更改第一个元素一样,会触发ActionListener,它会收集表单中的所有值,并覆盖以前加载的对象 解决这
现在我正在考虑创建一个全局变量,以便在加载对象时“关闭”create()方法(即创建一个停止操作侦听器的标志)。但我不确定这是否是个好主意。也许可以考虑创建一个名为FormState的枚举来表示表单的状态,例如读取和编辑。您可以在保存值之前和之后切换表单的状态。通过添加一个私有布尔变量来解决此问题,该变量在更新接口时更改为false。加载对象是什么意思?添加一个标志,用于停止
ActionListener
执行其任务,或停止将内容写入文件。在加载contentLoading对象之前设置此标志在我的示例中,加载对象意味着使用ObjectInputStream进行序列化。