I have asked a question earlier this week.Тестовая программа в среде Windows на OS X
Теперь я пришел к выводу, что причина такого странного поведения на самом деле является результатом различий в компоновке с JFileChooser при использовании Mac OS X или Windows.
На моем Mac окно выглядит следующим образом:
В то время как на Windows, это выглядит следующим образом:
Мой вопрос: есть ли шанс, что я может имитировать внешний вид Windows на моем Mac? Поскольку у меня нет компьютера под управлением Windows, поэтому я не могу проверять какие-либо изменения, но всегда должен ждать, пока кто-нибудь еще проверит его, что, конечно, очень медленно, поскольку это всего лишь вопрос параметризации.
public DelimiterFileChooser(String[] comboChoices) {
comboBox = new JComboBox<>();
comboBox.setModel(new DefaultComboBoxModel<String>(comboChoices));
JPanel comboPanel = null;
if (os.indexOf("mac") >= 0 || os.indexOf("nix") >= 0 || os.indexOf("nux") >= 0 || os.indexOf("aix") > 0) {
comboPanel = (JPanel) this.getComponent(4);
comboPanel = (JPanel) comboPanel.getComponent(2);
} else {
comboPanel = (JPanel) this.getComponent(3);
comboPanel = (JPanel) comboPanel.getComponent(3);
}
Component c1 = comboPanel.getComponent(0);
Component c2 = comboPanel.getComponent(1);
comboPanel.removeAll();
comboPanel.add(getPanel(new JLabel("Use delimiter for .csv:"), comboBox));
comboPanel.add(c1);
comboPanel.add(c2);
}
Для тех, кто заинтересован, вот мой код. Я нашел часть Windows в another stack overflow thread и изначально задавался вопросом, почему она не работает на моем Mac. Теперь, когда я знаю, что, очевидно, диалоги по-разному строятся на разных системах ОС, я перестала удивляться, но предлагаемое решение в потоке не делает трюк для меня.
Edit: обновил свой код, поэтому он выглядит лучше;)
Почему бы не запустить виртуальную машину Windows на вашем Mac? Использование Parallels, VMWare или бесплатного VirtualBox? Просто изменив L & F, даже если L & F является подлинным, все равно будет давать вам пути Mac (вы не сможете увидеть или выбрать такие вещи, как 'C:', 'D:' и т. Д., Которых нет на Mac). – RealSkeptic
Оказалось, что мой код работает на виртуальной машине, как и предполагалось. Это выглядит так, как должно быть в последнем сообщении, которое я разместил. Я получу обратную связь от человека, которого я спросил, работает ли он сейчас. Если это не так, я, вероятно, ничего не могу с этим поделать. – Cr0w3