3

ユーザーがフォルダーを選択する必要があるJavaSwingに問題があるため、以下のコードを使用しています。

JFileChooser fc = new JFileChooser();
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

if(fc.showDialog(singleton, SELECT) == JFileChooser.APPROVE_OPTION) {
  File folder = fc.getSelectedFile();
  String path = folder.getPath() + File.separatorChar + MYAPPFOLDER;
}

現在、ユーザーがフォルダを選択する方法は2つあります

  1. フォルダに移動して、フォルダを選択します
  2. フォルダに移動し、フォルダに移動して、[選択]をクリックします

どちらの方法もWindowsでは正常に機能しますが、OSXでは次のようになります。

私が1を行う場合: path = Users/<username>/Desktop/MYAPPFOLDER

私が2を行う場合: path = Users/<username>/Desktop/Desktop/MYAPPFOLDER

この2番目のケースを回避するにはどうすればよいですか?

前もって感謝します。

4

1 に答える 1

7

問題は、showDialogがこれがロード操作か保存操作かを認識しないため、新しいファイル/フォルダー名を入れるテキストボックスを提供することです。これは、フォルダーをクリックして移動すると「デスクトップ」に設定されます。 (ダブルクリックの最初のクリックとして)ユーザーが次にSELECTを押すと、ダイアログはその名前で新しいフォルダーを作成することを想定し、パスに返します。

1つの解決策は、代わりにshowOpenDialog呼び出しを使用し、チューザーのタイトルと承認ボタンを手動でSELECTに変更することです。そうすれば、ユーザーに新しいディレクトリテキストボックスが表示されることはありません。

コードは次のようになります。

JFileChooser fc = new JFileChooser();
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

fc.setDialogTitle("Select a folder");
fc.setApproveButtonText(SELECT);
if(fc.showOpenDialog(singleton) == JFileChooser.APPROVE_OPTION) {
  File folder = fc.getSelectedFile();
  String path = folder.getPath() + File.separatorChar + "MYAPPFOLDER";
}
于 2010-06-17T18:41:53.700 に答える