Swing/FileAlreadyExistsDialog のバックアップの現在との差分(No.7)
-
category: swing
folder: FileAlreadyExistsDialog
title: JFileChooserを開いたままファイルの上書き警告ダイアログを表示する
tags: [JFileChooser, JOptionPane]
author: aterai
pubdate: 2012-07-02T17:20:50+09:00
description: JFileChooserで名前を付けて保存する場合、すでに存在するファイルを選択してセーブボタンを押すと上書き警告ダイアログを表示するように設定します。
image:
hreflang:
href: https://java-swing-tips.blogspot.com/2012/08/jfilechooser-with-file-already-exists.html lang: en
概要
概要
JFileChooser
で名前を付けて保存する場合、すでに存在するファイルを選択してセーブボタンを押すと上書き警告ダイアログを表示するように設定します。
Screenshot
Advertisement
サンプルコード
サンプルコード
JFileChooser fileChooser = new JFileChooser() {
@Override public void approveSelection() {
File f = getSelectedFile();
if(f.exists() && getDialogType() == SAVE_DIALOG) {
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) {
if (rv != JOptionPane.YES_OPTION) {
return;
}
}
super.approveSelection();
}
};
View in GitHub: Java, Kotlin解説
上記のサンプルでは、ユーザーがSave
ボタンをクリックした時に呼び出されるJFileChooser#approveSelection()
をオーバーライドし、選択されているファイルがすでに存在する場合は、上書きしても良いかを確認するConfirmDialog
をJFileChooser
を親にして呼び出しています。Yes
の場合は、super.approveSelection()
を実行して結果を返してJFileChooser
を閉じる、No
の場合は、なにもせずにJFileChooser
に戻ります。
解説
-
JFileChooser
のSave
ボタンをクリックした時に呼び出されるJFileChooser#approveSelection()
メソッドをオーバーライドし、選択されているファイルがすでに存在するかどうかをチェック- ファイルが存在しない場合は通常の
JFileChooser
の処理を実行 - 存在する場合は上書きしても良いかを確認する
ConfirmDialog
をJFileChooser
を親にして呼び出し
- ファイルが存在しない場合は通常の
-
ConfirmDialog
でYes
をクリック-
super.approveSelection()
を実行して結果を返してJFileChooser
を閉じる - 上記のサンプルでは、このボタンをクリックしても選択しているファイル名をコンソールに出力するだけで実際にそのファイルを保存したり上書きする機能は実装していない
-
-
ConfirmDialog
でNo
をクリック- なにもせずに
JFileChooser
に戻る
- なにもせずに
- 注: このサンプルでは上書きするを選択した場合でも、選択したファイル名をコンソールに出力するだけで、実際にファイルを保存する機能は実装していません。
参考リンク
- Swing - How to react on events fired by a JFileChooser?
- java - JFileChooser with confirmation dialog - Stack Overflow
参考リンク
- Swing - How to react on events fired by a JFileChooser?
- java - JFileChooser with confirmation dialog - Stack Overflow