TITLE:JFileChooserを開いたままファイルの上書き警告ダイアログを表示する

Posted by at 2012-07-02

JFileChooserを開いたままファイルの上書き警告ダイアログを表示する

JFileChooserで名前を付けて保存する場合、すでに存在するファイルを選択してセーブボタンを押すと上書き警告ダイアログを表示するように設定します。

  • &jar;
  • &zip;
FileAlreadyExistsDialog.png

サンプルコード

JFileChooser fileChooser = new JFileChooser() {
  @Override public void approveSelection() {
    File f = getSelectedFile();
    if(f.exists() && getDialogType() == SAVE_DIALOG) {
      String m = String.format(
          "<html>%s already exists.<br>Do you want to replace it?",
          f.getAbsolutePath());
      int rv = JOptionPane.showConfirmDialog(
          this, m, "Save As", JOptionPane.YES_NO_OPTION);
      if(rv!=JOptionPane.YES_OPTION) {
        return;
      }
    }
    super.approveSelection();
  }
};
View in GitHub: Java, Kotlin

解説

上記のサンプルでは、ユーザーがSaveボタンをクリックした時に呼び出される JFileChooser#approveSelection() をオーバーライドし、選択されているファイルがすでに存在する場合は、上書きしても良いかを確認するConfirmDialogをJFileChooserを親にして呼び出しています。Yesの場合は、super.approveSelection() を実行して結果を返してJFileChooserを閉じる、Noの場合は、なにもせずにJFileChooserに戻ります。

  • 注: このサンプルでは上書きするを選択した場合でも、選択したファイル名をコンソールに出力するだけで、実際にファイルを保存する機能はありません。

参考リンク

コメント