【问题标题】:Take action on NetBean's editor's window closing在 NetBeans 编辑器窗口关闭时采取措施
【发布时间】:2012-03-05 13:34:28
【问题描述】:

我们使用的是 NetBeans 平台 7.0.1,并使用 this (now “obsolete”) tutorial 实现了对新语言的支持。

由于我们所有的内容都存储在数据库中,而不是文件中,因此我们可以这样打开它们:

 FileSystem fs = FileUtil.createMemoryFileSystem();
 FileObject fo = fs.getRoot().createData(fileName, fileExtension);
… write contents from database to `fo` ….

DataObject data = MyMultiDataObject.find(fo);
EditorCookie.Observable cookie = data.getCookie(EditorCookie.Observable.class);
cookie.open();
… forces undock of editor window …

并且,在我们的layer.xml 中,向Save 添加了一个自定义按钮,用于将内容发送回数据库。

但是,当用户关闭文件(通过关闭选项卡或窗口)时,我们还没有找到保存它的方法。

PropertyChangeListener 添加到Cookie 并注意PROP_DOCUMENT(和newValue() == null)似乎在关闭窗口时起到了作用。但是如何从确认窗口获取返回值(我指的是文件更改后关闭时,消息File xxx.xxx is modified. Save it?)?

【问题讨论】:

    标签: java netbeans netbeans-7


    【解决方案1】:

    嗯,看来我们一直在以错误的方式解决问题。

    由于我们是在内存中打开文件,所以在 netbeans-dev 列表中建议我们应该通过使用来监听文件本身的变化

    fo.addFileChangeListener(new CustomFileChangeListener());
    
    public class CustomFileChangeListener implements FileChangeListener {
        @Override
        public void fileChanged(FileEvent fe) {
           ... file has been saved in the editor, sync with database ...
        }
    }
    

    并以这种方式保持同步,利用内置的 NetBeans 平台“保存”功能。

    【讨论】:

      猜你喜欢
      • 2011-02-21
      • 2012-08-02
      • 1970-01-01
      • 1970-01-01
      • 2014-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多