JFileChooser在MAC OS裡面的問題

來源:互聯網
上載者:User

最近遇到一個需求,下載ftp到本地系統,需要開啟一個檔案儲存對話方塊。本地作業系統要支援windows、linux和mac。所以考慮用java的javax.swing.JFileChooser;

於是,寫了個測試程式如下:

 

代碼

public static void main(String[] args) {
    String retStr = "";
    JFileChooser   c=new   JFileChooser();   
    c.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);   
    c.setDialogTitle("請選擇下載的目標檔案夾");
    c.setDialogType(JFileChooser.SAVE_DIALOG);
    int ret = c.showSaveDialog(null);
    if(ret==JFileChooser.CANCEL_OPTION){
        retStr = "";
    }
    else if(ret==JFileChooser.APPROVE_OPTION){
        retStr = c.getSelectedFile().getAbsolutePath();
        System.out.println(retStr);
        //System.out.println(System.getProperty("os.name"));

    }
    else if(ret==JFileChooser.ERROR_OPTION){
        retStr = "";
    }
}

 

 

在windows下運行沒有問題,能正常得到儲存的檔案夾地址,但是到了MAC下,發現奇怪現象,比如如果選中/Volume/ftptest/,並且雙擊開啟,得到的路徑將是/Volume/ftptest/ftptest/ ,也就是目標檔案夾會重複,但是若直選中檔案夾,而不進入,將返回正確路徑。。。

 

初步判定是JFileChooser的showSaveDialog對跨平台支援不好,或者是MAC系統對java支援不好。後來遍尋解決方案,在一老外的部落格上看到解決辦法:

The problem occurs when you use chooser.showDialog or chooser.showSaveDialog instead of chooser.showOpenDialog. On XP chooser.showDialog returns the correct path under the example given by the OP, but on Mac OS 10.5.7 (and probably earlier versions as well) you'll get ~/Desktop/Desktop .

敢情在MAC上不要用showDialog和showSaveDialog。。。。

 

所以,上面代碼中showSaveDialog改為showOpenDialog,問題解決。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.