我試圖打開一個JFileChooser
對話框讓用戶決定他的願望目錄以進行下列操作。瞭解JFileChooser行爲
以下是我當前的代碼:
JFileChooser chooser;
if(pref.get("LAST_PATH", "") != null){
chooser = new JFileChooser(pref.get("LAST_PATH", ""));
} else{
chooser = new JFileChooser(home_dir);
}
//chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
chooser.setAcceptAllFileFilterUsed(false);
int retVal = chooser.showOpenDialog(frame);
System.out.println("getCurrentDirectory(): " + chooser.getCurrentDirectory().toString());
HOME_DIR是指向用戶的下載目錄的靜態字符串。
的行爲我不明白:
home_dir = C:/Users/Scy/Downloads
按確定沒有選擇任何文件(或目錄)
Output: C:/Users/Scy
home_dir = C:/Users/Scy/Downloads
選擇中下載任何文件
Output: C:/Users/Scy/Downloads
爲什麼我沒有選擇任何東西,而只是按下確定,沒有得到完整路徑(C:/Users/Scy/Downloads
)作爲輸出? (隨着DIRECTORIES_ONLY
激活,離不開DIRECTORIES_ONLY
按沒有做出任何選擇OK)
編輯:我剛剛注意到,當我剛按下取消按鈕沒有做出任何選擇的輸出確實是我所期望的,C:/Users/Scy/Downloads
。
基於對這個職位的答案,我試過如下:
JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new File(home_dir)); //home_dir = "C:/Users/Scy/Downloads"
結果是完全一樣的上方。按下取消按鈕會導致完整路徑輸出,同時按下C:/Users/Scy
中的確定/接受結果。
「在下載輸出中選擇任何文件:C:/ Users/Scy/Downloads」這是我對你的問題感到困惑的地方。當你在目錄中選擇**文件**時,'getParentDirectory()'應該返回所述目錄的名稱。你還期望什麼?更重要的是,你想**什麼樣的行爲? –
我在哪裏使用'getParentDirectory()'? 'getCurrentDirectory()'返回我放入它的任何給定文件的父目錄。因此,選擇一個目錄或者更具體地說'C:/ Users/Scy/Downloads'會導致'C:/ Users/Scy',而它應該是'C:/ Users/Scy/Downloads',因爲那是當前目錄。 –