Swing/RenameIfCanWriteFileChooser のバックアップ(No.3)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/RenameIfCanWriteFileChooser へ行く。
- 1 (2011-10-21 (金) 02:12:49)
- 2 (2011-12-15 (木) 20:34:29)
- 3 (2012-12-16 (日) 01:40:28)
- 4 (2013-09-05 (木) 00:39:56)
- 5 (2014-11-25 (火) 03:03:31)
- 6 (2015-02-05 (木) 14:35:02)
- 7 (2016-08-19 (金) 16:19:26)
- 8 (2017-10-05 (木) 14:30:25)
- 9 (2019-04-04 (木) 14:26:18)
- 10 (2021-01-14 (木) 17:59:30)
- 11 (2023-07-27 (木) 18:37:23)
- 12 (2024-03-18 (月) 14:17:20)
TITLE:JFileChooserで読み取り専用ファイルのリネームを禁止
Posted by aterai at 2011-10-17
JFileChooserで読み取り専用ファイルのリネームを禁止
JFileChooserで読み取り専用属性ファイルのリネームを禁止します。
- &jar;
- &zip;
サンプルコード
class CanWriteFileChooserUI extends MetalFileChooserUI{
protected CanWriteFileChooserUI(JFileChooser chooser) {
super(chooser);
}
public static ComponentUI createUI(JComponent c) {
return new CanWriteFileChooserUI((JFileChooser)c);
}
private BasicDirectoryModel model2 = null;
@Override public void createModel() {
if(model2!=null) {
model2.invalidateFileCache();
}
model2 = new BasicDirectoryModel(getFileChooser()) {
@Override public boolean renameFile(File oldFile, File newFile) {
return oldFile.canWrite()?super.renameFile(oldFile, newFile):false;
}
};
}
@Override public BasicDirectoryModel getModel() {
return model2;
}
}
View in GitHub: Java, Kotlin解説
上記のサンプルでは、BasicDirectoryModel#renameFile(...)をオーバーライドして取り専用属性ファイルのリネームを確定しようとすると警告ダイアログが表示されるようになっています。
sun.swing.FilePane#canWrite(File)をオーバーライドすれば、編集開始自体を禁止にすることもできそうですが、MetalFileChooserUIなどのUIでFilePaneがprivateになっているためかなり面倒です。