1

Intellijで実行すると、プログラムは正常に機能しました(中国語の名前付きファイルを表示できます)。

.jarファイルに組み込みました。jarを実行しましたが、JFileChooserこれらのファイルを表示できません。

そして、私はWindowsでjarファイルを試しましたが、完全に正常に動作します。

4

1 に答える 1

1

これは、Mac OSX10.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を使用すると、ほとんどのMacOSユーザーが見慣れているプラ​​ットフォーム固有のファイルダイアログが表示されることに注意してください。厳密にはSwingではありませんが(非常に小さな機能セットがあります)、JFileChooserOPENダイアログやSAVEダイアログなどにはおそらく優れています。(私のシステムでは問題なく漢字も表示されます)。

于 2012-12-28T17:11:30.600 に答える