2008-12-10 16 views

回答

88

如果我理解正確,您需要使用setSelectedFile方法。

JFileChooser jFileChooser = new JFileChooser(); 
jFileChooser.setSelectedFile(new File("fileToSave.txt")); 
jFileChooser.showSaveDialog(parent); 

該文件不需要存在。

編輯:如果你通過一個絕對路徑的文件,JFileChooser將嘗試自己在該目錄(如果它存在)。

1

如果不工作,這裏是一個解決辦法:

dialog.getUI().setFileName(name) 

但是,你應該檢查選擇模式是否是FILES_ONLYFILES_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界面,因此需要動態調用它

+0

你將如何訪問對話框?它是私人的,在`showSaveDialog()`現場創建,並且在它被顯示後立即放置,仍然在該函數內部。 – Nyerguds 2011-08-12 08:26:40

+0

我會複製該方法。 – 2011-08-12 10:33:58

4

setSelectedFile不與目錄工作。只在mac上測試過。

+0

在Mac上爲我工作10.3.4/Java 1.4.2 – 2012-06-15 17:32:31

-3

太棒了! 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); 
相關問題