В моем приложении мне нужно последовательно открыть 2 JFileChooser (для выбора исходных файлов и целевого каталога). Второй просто не появляется ... Сжал код до абсолютного минимума, все равно не работает:
public class FileChooserTest
{
public static void main(String[] args)
{
// Create main window
JFrame mainFrame = new JFrame( "Import Pictures");
mainFrame.setSize( 1000, 500 );
mainFrame.setVisible(true);
JFileChooser inputChooser = new JFileChooser();
int returnVal = inputChooser.showOpenDialog(mainFrame);
JFileChooser outputChooser = new JFileChooser();
returnVal = outputChooser.showOpenDialog(mainFrame);
}
}
Приложение зависает при вызове showOpenDialog функции outputChooser ...
Я использую JDK 1.8.0_181, NetBeans 8.2, Mac OS X Mojave Beta.
Есть идеи, что происходит?
работает и здесь, хотя Windows




Вы можете попробовать не использовать returnVal для обоих средств выбора файлов.
JFileChooser inputChooser = new JFileChooser();
int returnVal1 = inputChooser.showOpenDialog(mainFrame);
JFileChooser outputChooser = new JFileChooser();
int returnVal2 = outputChooser.showOpenDialog(mainFrame);
У меня нет своего компьютера прямо сейчас, поэтому я не могу проверить это, чтобы увидеть, работает ли он, но похоже, что если они оба открываются с одним и тем же возвращаемым значением, то один из них, вероятно, не откроется. Попробуйте это и дайте мне знать, как это происходит.
Когда вы открываете средство выбора файла, showOpenDialog(mainFrame) возвращает int, но он также открывает диалоговое окно, если вы сделаете это с тем же значением returnValue, тогда он откроет только одно диалоговое окно, потому что он может вернуть результат только одному int
Здесь этот код работает, как ожидалось, несмотря на то, что он не запущен на EDT. Я предлагаю вам сначала исправить это, а затем проверить База данных ошибок.