Java 如何在用户界面中编辑数据时向用户发出警告,以便我可以警告他们覆盖,或提示他们保存?(爪哇)

Java 如何在用户界面中编辑数据时向用户发出警告,以便我可以警告他们覆盖,或提示他们保存?(爪哇),java,javafx-2,Java,Javafx 2,如何在UI中编辑数据时警告用户,以便我可以警告他们从其他源加载时会被覆盖,或者提示他们保存?(JavaFX2.2) 我将有50多个文本字段,跨越多个选项卡和2或3个表格,带有添加和删除行的按钮 我想知道是否要有一个全局“isDirty”布尔标志,并且可以在按钮上设置操作处理程序,但是我必须在每个文本字段和文本区域上设置处理程序吗?(它会减慢速度吗?)。Java是否跟踪是否编辑了任何字段?如果是,我可以从中捕获信息吗?一个可能干净的解决方案是使用一种MyWholeDataset类,该类在UI启动时

如何在UI中编辑数据时警告用户,以便我可以警告他们从其他源加载时会被覆盖,或者提示他们保存?(JavaFX2.2)

我将有50多个文本字段,跨越多个选项卡和2或3个表格,带有添加和删除行的按钮


我想知道是否要有一个全局“isDirty”布尔标志,并且可以在按钮上设置操作处理程序,但是我必须在每个文本字段和文本区域上设置处理程序吗?(它会减慢速度吗?)。Java是否跟踪是否编辑了任何字段?如果是,我可以从中捕获信息吗?

一个可能干净的解决方案是使用一种MyWholeDataset类,该类在UI启动时填充数据,另一个“克隆”对象用于实际UI显示。 然后,每次用户更改UI中的数据时,您都会更改第二个对象(克隆的对象)。
最后,您应该实现可比较的接口。这告诉您存在差异,然后您可以使用一种“GetDelta”方法,该方法返回一组不同的字段名,或者返回一个hasmap,将字段名作为键返回,并将包含新旧值对的对象作为值返回。

将所有数据保存在单独的数据模型中可能更容易,作为加载和保存操作的侦听器,将数据模型与文本字段和表的内容进行比较。拥有一个数据模型只会让事情变得更糟,尽管我显然有一个表的ArrayList(“数据模型”)。这些是设备的配置参数。我正在从设备读取数据并将其显示在屏幕上。可以连接多个设备,我们可以从一个设备保存到另一个设备,因此存在覆盖未保存数据的危险。如果您不想比较两个模型,另一个选项是更新已更新为新类“dirty”的任何字段的标记。然后,您可以搜索任何脏字段并适当处理它们。@Zylth您能解释一下“更新标记…”。。。使用新的类dirty'?这将比后端更适合UI,但要实现任何更改的处理程序,然后将文本字段的类更新为也包含“dirty”,这听起来类似于gilbert上面的评论。是的,这应该是“方式”,关于正确的OOP。我只是想澄清一下,因为吉尔伯特没有写过如何比较“原始”和“GUI修改”模型。在我看来,最好的解决方案是使用可比较的接口,让模型与自己进行比较,并提供一种检索差异集的方法。就这样。