java Swing监视器未保存的更改
我开发了一个由12个jpanel组成的图形界面,每个包含4到10个JTextFields强> 我想实现一个未保存的更改警告,以防用户更改了某些JTextFields的内容,但没有将更改提交到数据库强>
如何做到这一点? 我的第一个想法是使用itemstener并注册所有JTextFields。我可以为每个面板存储一个变量boolean unsavedChanges,并检查所有面板是否为false
你能想象另一个可能更有效的解决方案吗
你可以在下面搜索框中键入要查询的问题!
我开发了一个由12个jpanel组成的图形界面,每个包含4到10个JTextFields强> 我想实现一个未保存的更改警告,以防用户更改了某些JTextFields的内容,但没有将更改提交到数据库强>
如何做到这一点? 我的第一个想法是使用itemstener并注册所有JTextFields。我可以为每个面板存储一个变量boolean unsavedChanges,并检查所有面板是否为false
你能想象另一个可能更有效的解决方案吗
# 1 楼答案
你有两个选择
您可以在每个JTextField的文档上注册DocumentListener
textField.getDocument().addDocumentListener(documentListener)
缺点:即使用户已将值更改为原始值,文本字段也会标记为已更改。要处理此问题,可以将原始值保存在自己的文档侦听器中,并将新值与之进行比较。方法hasChanged()提供所需的信息
从数据库中获取文本字段中显示的原始值时,可以将其保存在地图或类似的内容中。检查面板时,必须将文本字段的内容与原始值进行比较
编辑
要收集每个文本字段的更改信息,可以使用这样的类。在框架中创建一个实例,并将其传递给所有面板