cru*_*sam 2 javafx listener scenegraph javafx-8
我们在JavaFX中创建了一个小型绘画应用程序.一个新的要求出现了,我们必须警告用户,他做了一些尚未持久的更改并询问他,用户是否愿意在关闭之前先保存.
示例快照:

不幸的是,有很多不同的节点,节点可以通过多种方式进行更改,例如Polygon点可以移动.可以拖动节点本身.它们可以旋转等等.因此,在为一个Node对象的每个可能的更改触发一个极好的事件之前,我想问一下,如果有人可能知道如何简化这种方法.我很好奇,如果有任何监听器,我可以在JavaFX的场景图中监听canvas对象的任何更改.
特别是因为我只是想知道是否有任何改变,而不是真的需要知道具体的变化.
此外,我也不希望得到每个单独的事件,如简单的选择,这会导致在所选节点周围显示边框(如图中所示),这并不意味着用户必须保存他的离开前申请.
有人有想法吗?或者我真的需要为节点内的每一次更改触发事件吗?
我认为你正在以错误的方式解决这个问题.屏幕上显示的节点应该只是底层模型的直观表示.您真正需要知道的是底层模型已经改变.
例如,如果您正在编写文本编辑器,则屏幕上显示的文本将由某种模型支持.我们假设模型是一个String.您不需要检查屏幕上显示的任何文本节点是否已更改,您只需要将原始字符串数据与当前字符串数据进行比较,以确定是否需要提示用户进行保存.