JFileChooserを開いたままファイルの上書き警告ダイアログを表示する
Total: 10738, Today: 1, Yesterday: 2
Posted by aterai at
Last-modified:
Summary
JFileChooserで名前を付けて保存する場合、すでに存在するファイルを選択してセーブボタンを押すと上書き警告ダイアログを表示するように設定します。
Screenshot

Advertisement
Source Code Examples
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, KotlinDescription
JFileChooserのSaveボタンをクリックした時に呼び出されるJFileChooser#approveSelection()メソッドをオーバーライドし、選択されているファイルがすでに存在するかどうかをチェック- ファイルが存在しない場合は通常の
JFileChooserの処理を実行 - 存在する場合は上書きしても良いかを確認する
ConfirmDialogをJFileChooserを親にして呼び出し
- ファイルが存在しない場合は通常の
ConfirmDialogでYesをクリックsuper.approveSelection()を実行して結果を返してJFileChooserを閉じる- 上記のサンプルでは、このボタンをクリックしても選択しているファイル名をコンソールに出力するだけで実際にそのファイルを保存したり上書きする機能は実装していない
ConfirmDialogでNoをクリック- なにもせずに
JFileChooserに戻る
- なにもせずに
Reference
- Swing - How to react on events fired by a JFileChooser?
- java - JFileChooser with confirmation dialog - Stack Overflow