2012-12-28 47 views
1

在Intellij中運行的程序運行良好(可以看到中文命名文件)。Mac上的JFileChooser無法看到由中文字符命名的文件?

我將它構建到一個.jar文件中。執行了jar和JFileChooser無法看到這些文件。

我試過在Windows中的jar,它工作得很好。

+0

所以它在IntelliJ中的Mac上工作,但是當你...什麼時候不工作?另外,當你說「看不見」時,你的意思是說他們根本沒有出現,或者他們被顯示但沒有正確(像亂碼等)? –

回答

1

這個工程文件,我在Mac OS X 10.8.2:

import java.io.File; 
import javax.swing.JFileChooser; 
public class JFileChooserTest 
{ 
    public static void main(String[] args) 
    { 
    System.out.println("file.encoding=" + System.getProperty("file.encoding")); 
    String path; 

    if(args.length > 0) 
     path = args[0]; 
    else 
     path = System.getProperty("user.dir", "."); 

    File dir = new File(path); 

    JFileChooser jfc = new JFileChooser(dir); 
    int result = jfc.showOpenDialog(null); 

    switch(result) { 
     case JFileChooser.CANCEL_OPTION: 
     System.out.println("User cancelled OPEN dialog."); 
     break; 
     case JFileChooser.APPROVE_OPTION: 
     System.out.println("User chose file: " + jfc.getSelectedFile()); 
     break; 
     case JFileChooser.ERROR_OPTION: 
     System.out.println("User encountered an error"); 
     break; 
    default: 
     System.out.println("Confused"); 
     break; 
    } 

    System.exit(0); 
    } 
} 

下面是一個運行示例:

$ java -showversion JFileChooserTest 
java version "1.7.0_09" 
Java(TM) SE Runtime Environment (build 1.7.0_09-b05) 
Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode) 

file.encoding=UTF-8 
User chose file: /.../測試文件.txt 

這裏的另一個樣品運行:

$ java -showversion -Dfile.encoding=ISO-8859-1 JFileChooserTest 
java version "1.7.0_09" 
Java(TM) SE Runtime Environment (build 1.7.0_09-b05) 
Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode) 

file.encoding=ISO-8859-1 
User chose file: /.../????.txt 

在這兩個情況下,文件選擇對話框正確顯示文件的名稱(測試文件.txt)。

請注意,使用java.awt.FileDialog將爲您提供大多數Mac OS用戶習慣看到的特定於平臺的文件對話框。儘管它不是嚴格的Swing(並且具有非常小的特徵集合),但對於諸如OPEN和SAVE對話之類的東西,它可能優於JFileChooser。 (它也顯示中文字符在我的系統上沒有問題)。