JFileChooserで新規フォルダ作成を無効化する
Total: 1604, Today: 1, Yesterday: 2
Posted by aterai at
Last-modified:
Summary
JFileChooserで既存ファイルの名前変更は有効のまま新規フォルダの作成のみ無効に設定します。
Screenshot

Advertisement
Source Code Examples
JFileChooser fc2 = new JFileChooser();
fc2.setFileSystemView(new FileSystemView() {
@Override public File createNewFolder(File containingDir) {
return null;
}
});
String cmd = "New Folder"; // = sun.swing.FilePane.ACTION_NEW_FOLDER
Optional.ofNullable(fc2.getActionMap().get(cmd)).ifPresent(a -> a.setEnabled(false));
fc2.addPropertyChangeListener(JFileChooser.DIRECTORY_CHANGED_PROPERTY, e -> {
if (e.getNewValue() instanceof File) {
Optional.ofNullable(fc2.getActionMap().get(cmd)).ifPresent(a -> a.setEnabled(false));
}
});
View in GitHub: Java, KotlinDescription
FileSystemView#createNewFolder(...)をオーバーライドしnullを返すよう設定して新規フォルダの作成を無効化- ツールバーの「新規フォルダの作成」ボタンやコンテキストメニューの「新規フォルダ」メニューアイテムはクリック可能だが、クリックしても新規フォルダが作成されなくなる
JFileChooser#getActionMap()でFilePane.ACTION_NEW_FOLDERアクションを取得しsetEnabled(false)で無効化- フォルダごとに新規フォルダが作成可能かどうかは変化するので、
JFileChooserにPropertyChangeListenerを追加してカレントディレクトリが変更されるたびに「新規フォルダの作成」アクションを無効化している - [JDK-8021379] JFileChooser Create New Folder button enabled in write proteced directory - Java Bug System
- JFileChooserに画像プレビューを追加
- フォルダごとに新規フォルダが作成可能かどうかは変化するので、
UIManager.put("FileChooser.readOnly", Boolean.TRUE)でJFileChooserをリードオンリーにすると「新規フォルダの作成」だけでなくファイルの「名前の変更」も不可になる
Reference
- JFileChooserを編集不可にする
- JFileChooserに画像プレビューを追加
- [JDK-8021379] JFileChooser Create New Folder button enabled in write proteced directory - Java Bug System