Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用ActionListener从加载的对象更新表单元素_Java_User Interface - Fatal编程技术网

Java 使用ActionListener从加载的对象更新表单元素

Java 使用ActionListener从加载的对象更新表单元素,java,user-interface,Java,User Interface,我有一个带有复选框和微调器的表单。它们都有分配给它们的ActionListeners\ChangeListeners,因此每次更改某些元素时,程序都会启动一个create()方法,该方法收集整个表单中的所有值,并将其放入object中,该对象可在以后保存到光盘中 但现在我正试图让程序从文件中加载该对象,并根据加载的内容更新接口。这就是问题所在。程序加载对象后,会尝试更新表单的元素,但正如它更改第一个元素一样,会触发ActionListener,它会收集表单中的所有值,并覆盖以前加载的对象 解决这

我有一个带有复选框和微调器的表单。它们都有分配给它们的ActionListeners\ChangeListeners,因此每次更改某些元素时,程序都会启动一个create()方法,该方法收集整个表单中的所有值,并将其放入object中,该对象可在以后保存到光盘中

但现在我正试图让程序从文件中加载该对象,并根据加载的内容更新接口。这就是问题所在。程序加载对象后,会尝试更新表单的元素,但正如它更改第一个元素一样,会触发ActionListener,它会收集表单中的所有值,并覆盖以前加载的对象

解决这个问题的好办法是什么


现在我正在考虑创建一个全局变量,以便在加载对象时“关闭”create()方法(即创建一个停止操作侦听器的标志)。但我不确定这是否是个好主意。

也许可以考虑创建一个名为FormState的枚举来表示表单的状态,例如读取和编辑。您可以在保存值之前和之后切换表单的状态。

通过添加一个私有布尔变量来解决此问题,该变量在更新接口时更改为false。

加载对象是什么意思?添加一个标志,用于停止
ActionListener
执行其任务,或停止将内容写入文件。在加载contentLoading对象之前设置此标志在我的示例中,加载对象意味着使用ObjectInputStream进行序列化。