これはオープンソースなので、実装を確認できます。最新のブランチからダイアログを開くコード (一部のコードは省略)は次のとおりです。
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 を使用して、メソッドへの参照をすばやく見つけることができます。そういえば、Dr. Java ではコード補完やフォーマットなどの基本的な機能がほとんど提供されていなかったことを覚えているので、Eclipse だけを使用することをお勧めします。