JFileChooser
の機能が不足しているようです。ファイルを保存するときにファイル名を提案する方法(通常、ユーザーが入力を開始したときに置き換えられるように選択されるもの)。
これを回避する方法はありますか?
正しく理解できた場合は、setSelectedFile
メソッドを使用する必要があります。
JFileChooser jFileChooser = new JFileChooser();
jFileChooser.setSelectedFile(new File("fileToSave.txt"));
jFileChooser.showSaveDialog(parent);
ファイルは存在する必要はありません。
EDIT:絶対パスでファイルを渡すと、JFileChooser
はそのディレクトリに自分自身を配置しようとします(存在する場合)。
setSelectedFileは上記のディレクトリでは機能しません。解決策は
try {
FileChooserUI fcUi = fileChooser.getUI();
fcUi.setSelectedFile(defaultDir);
Class<? extends FileChooserUI> fcClass = fcUi.getClass();
Method setFileName = fcClass.getMethod("setFileName", String.class);
setFileName.invoke(fcUi, defaultDir.getName());
} catch (Exception e) {
e.printStackTrace();
}
残念ながら、setFileNameはUIインターフェースに含まれていないため、動的に呼び出す必要があります。 Macでのみテストされています。
それがうまくいかない場合、次の回避策があります。
_dialog.getUI().setFileName( name )
_
ただし、選択モードが_FILES_ONLY
_か_FILES_AND_DIRECTORIES
_かを確認する必要があります。 _DIRECTORIES_ONLY
_の場合、setSelectedFile()
はファイル名を削除します。