0

編集を行って保存せずに drjava でファイルを閉じようとすると、予想どおり、「[ファイル名] が変更されました。保存しますか?」というダイアログ ボックスが表示されます。

多くの場合、この時点で閉じることをキャンセルしてさらに編集を加え、手動でファイルを保存することにします。

残念ながら、[キャンセル] を押すと、[いいえ] を押すのと同じ結果になります。保存せずにウィンドウが閉じ、作業内容が失われます。

これは drjava の意図した動作ですか? または、問題を解決するために使用できるコード/選択するオプションはありますか? 動作を覚えている限りは扱いやすいですが、それでもかなり不便です。

4

1 に答える 1

0

これはオープンソースなので、実装を確認できます。最新のブランチからダイアログを開くコード (一部のコードは省略)は次のとおりです。

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 だけを使用することをお勧めします。

于 2013-10-22T14:00:42.307 に答える