臃腫的JFileChooser
似乎缺少一個功能:一種在保存文件時提示文件名的方法(通常被選中以使其當用戶開始輸入時被替換)。JFileChooser.showSaveDialog(...) - 如何設置建議的文件名
有沒有辦法解決這個問題?
臃腫的JFileChooser
似乎缺少一個功能:一種在保存文件時提示文件名的方法(通常被選中以使其當用戶開始輸入時被替換)。JFileChooser.showSaveDialog(...) - 如何設置建議的文件名
有沒有辦法解決這個問題?
如果我理解正確,您需要使用setSelectedFile
方法。
JFileChooser jFileChooser = new JFileChooser();
jFileChooser.setSelectedFile(new File("fileToSave.txt"));
jFileChooser.showSaveDialog(parent);
該文件不需要存在。
編輯:如果你通過一個絕對路徑的文件,JFileChooser
將嘗試自己在該目錄(如果它存在)。
如果不工作,這裏是一個解決辦法:
dialog.getUI().setFileName(name)
但是,你應該檢查選擇模式是否是FILES_ONLY
或FILES_AND_DIRECTORIES
。如果它是DIRECTORIES_ONLY
,那麼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界面,因此需要動態調用它
setSelectedFile不與目錄工作。只在mac上測試過。
在Mac上爲我工作10.3.4/Java 1.4.2 – 2012-06-15 17:32:31
太棒了! Java 1.6.35也可以在Windows中完美工作。我的情況只有一點改變:
FileChooserUI fcUi = jFileChooser.getUI();
Class<? extends FileChooserUI> fcClass = fcUi.getClass();
Method setFileName = fcClass.getMethod("setFileName", String.class);
setFileName.invoke(fcUi, defaultDirectoryName);
你將如何訪問對話框?它是私人的,在`showSaveDialog()`現場創建,並且在它被顯示後立即放置,仍然在該函數內部。 – Nyerguds 2011-08-12 08:26:40
我會複製該方法。 – 2011-08-12 10:33:58