drjava:关闭取消意图?

时间:2013-10-22 13:27:35

标签: java save drjava

每当我在进行一些编辑而不是保存之后尝试关闭drjava中的文件时,程序会按预期给出对话框: “[文件名]已被修改。你要保存吗?”

在许多情况下,我将在此时决定取消关闭并进行更多编辑,然后手动保存文件。

不幸的是,点击“取消”与点击“否”具有相同的效果:窗口关闭而不保存,我失去了工作。

这是drjava的预期行为吗?或者是否有一些选项可以选择/我可以使用哪些代码来解决问题?虽然只要我记得它的行为是可管理的,但它仍然非常不方便。

1 个答案:

答案 0 :(得分:0)

它是开源的,所以我们可以看看实现。这是打开对话框的代码(省略了一些代码)from the newest branch

private boolean _fileSaveHelper(OpenDefinitionsDocument doc, int paneOption) {
  ...

  int rc = JOptionPane.showConfirmDialog(MainFrame.this, text, "Save " + fname + "?", paneOption);
  switch (rc) {
    case JOptionPane.YES_OPTION:
      boolean saved = false;
      if (notFound) saved = _saveAs(); 
      else saved = _save();
      if (doc != lastActive) {
        _model.setActiveDocument(lastActive);  // breaks when "if" clause omitted
      }
      return saved;
    case JOptionPane.NO_OPTION:
      if (doc != lastActive) {
      _model.setActiveDocument(lastActive);  // breaks when "if" clause omitted
    }
      return true;
    case JOptionPane.CLOSED_OPTION:
    case JOptionPane.CANCEL_OPTION:
      return false;
    default:                         // never executed
      throw new RuntimeException("Invalid option: " + rc);
  }
}

“no”和“cancel”有单独的案例,所以看起来他们确实试图正确处理它。因此它可能是一个错误。该方法引用该方法

public boolean quitFile(OpenDefinitionsDocument doc) { 
  return _fileSaveHelper(doc, JOptionPane.YES_NO_CANCEL_OPTION); 
}

在MainFrame.java之外的某处引用。我不倾向于研究它,因为我甚至没有安装Java IDE。如果您愿意,可以分叉项目并使用像Eclipse这样的IDE来快速查找对该方法的引用。说到这一点,我建议只使用Eclipse,因为我记得Java博士几乎没有提供代码完成和格式化等基本功能。