Я просто попытался образец:
import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
import java.awt.*;
public class Trial {
public static void main(String... args) {
JFrame frame = new JFrame("FrameDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel emptyLabel = new JLabel();
frame.getContentPane().add(emptyLabel, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
JFileChooser chooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter("JPG & GIF Images", "jpg", "gif");
chooser.setFileFilter(filter);
int returnVal = chooser.showOpenDialog(frame);
if(returnVal == JFileChooser.APPROVE_OPTION) {
System.out.println("You chose to open this file: " +
chooser.getSelectedFile().getName());
}
}
}
на OS X 10.9.1
работает JDK 1.7.0_51
. Я создал следующую иерархию папок: ~/Documents/Joyeux Naufragés/ábc Eóz
: .
Для решения этой проблемы вы описали, я установил также JDK вы отметили, JDK_1.7.0_25 и мне удалось воспроизвести тот же вопрос, вот снимок для того же самого окна под управлением U25
Как можно видеть, что папки, содержащие специальные символы, не отображаются. Поэтому я также проверил JDK 1.7.0_40 и удивил - он работает. После этого я перешел в bugs, исправленный в данной версии, я обнаружил, что некоторые ошибки связаны с mac os x, где исправлено в этой версии. Среди них пара (7024118, 7032018, 7032436, 7161437) относится к проблемам в JFileChooser. Существуют и другие проблемы, связанные с mac (всего 45), из которых один относится к FileDialog. К сожалению, ссылки на описания ошибок не работают, поэтому я не могу опубликовать дополнительную информацию по этому вопросу, но решение для вашей проблемы, безусловно, должно быть обновлено по крайней мере до версии 1.7.0_40, даже если я полагаю, что лучше всего было бы обновить до последний (1.7.0_51).
Удачи вам в работе. Я надеюсь, это поможет вам.
Связанный: http://stackoverflow.com/questions/14072619/jfilechooser-on-mac-cannot-see-files-named-by-chinese-chars и http://stackoverflow.com/questions/1545625/java -cant-open-a-file-with-surrogate-unicode-values-in-the filename – Jayan
Вы пробовали '-Dfile.encoding = UTF-8', как упоминалось в вышеупомянутых ссылках? –
@ShadowCreeper Я не заметил комментариев в одном из вопросов, упоминающих -Dfile.encoding = UTF-8, я попробую, когда вернусь домой. Где я должен поставить эту команду? Это параметр при запуске JVM или что-то, что должно быть помещено где-то в моем коде? –