每当我在进行了一些编辑而不是保存后尝试关闭 drjava 中的文件时,程序如预期的那样给出对话框:“[文件名]已被修改。您要保存它吗?”
在许多情况下,我会在此时决定取消关闭并进行更多编辑,然后手动保存文件。
不幸的是,点击“取消”与点击“否”具有相同的效果:窗口关闭而不保存,我失去了我的工作。
这是 drjava 的预期行为吗?还是有一些选项可以选择/我可以用来解决问题的一些代码?虽然只要我记得它的行为是可以管理的,它仍然很不方便。
它是开源的,所以我们可以看看实现。这是从最新分支打开对话框的代码(省略了一些代码):
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);
}
}
“否”和“取消”有不同的情况,所以看起来他们确实试图正确处理它。因此,它可能是一个错误。该方法引用该方法
public boolean quitFile(OpenDefinitionsDocument doc) {
return _fileSaveHelper(doc, JOptionPane.YES_NO_CANCEL_OPTION);
}
它在 MainFrame.java 之外的某处被引用。我不打算研究它,因为我什至没有安装 Java IDE。如果您愿意,您可以分叉该项目并使用 Eclipse 之类的 IDE 来快速找到对该方法的引用。说到这一点,我建议只使用 Eclipse,因为我记得 Java 博士几乎没有提供代码完成和格式化等基本功能。