Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
Netbeans 使用标准UndoManagerAPI 来实现撤消功能。但是既没有标准javax.swing.undo.UndoManager也org.openide.awt.UndoRedo.Manager没有任何方法可以将状态标记为已保存并检查修改状态。尽管如此,如果您更改文件并按撤消,该文件将被标记为未修改。他们是怎么做到的?如果是 Netbeans RCP 应用程序,我的(非文本)编辑器需要相同的功能。
UndoManager
javax.swing.undo.UndoManager
org.openide.awt.UndoRedo.Manager
我想通了。当有人保存文件时CloneableEditSupport添加。UndoableEdit当有人从已保存状态撤消或重做到已保存状态时,此编辑会发出信号。它还包装下一次编辑(直到第一个重要的编辑)以拦截从已保存状态的重做和撤消到已保存状态的操作。
CloneableEditSupport
UndoableEdit
UndoableEdit仅当您生成的所有 s 都很重要时,此技巧才有效。