Не удается открыть второй JFileChooser

В моем приложении мне нужно последовательно открыть 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.

Есть идеи, что происходит?

Здесь этот код работает, как ожидалось, несмотря на то, что он не запущен на EDT. Я предлагаю вам сначала исправить это, а затем проверить База данных ошибок.

Andrew Thompson 01.08.2018 02:17

работает и здесь, хотя Windows

Axel Podehl 01.08.2018 09:45
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
54
1

Ответы 1

Вы можете попробовать не использовать returnVal для обоих средств выбора файлов.

JFileChooser inputChooser = new JFileChooser();
int returnVal1 = inputChooser.showOpenDialog(mainFrame);

JFileChooser outputChooser = new JFileChooser();
int returnVal2 = outputChooser.showOpenDialog(mainFrame);

У меня нет своего компьютера прямо сейчас, поэтому я не могу проверить это, чтобы увидеть, работает ли он, но похоже, что если они оба открываются с одним и тем же возвращаемым значением, то один из них, вероятно, не откроется. Попробуйте это и дайте мне знать, как это происходит.

Когда вы открываете средство выбора файла, showOpenDialog(mainFrame) возвращает int, но он также открывает диалоговое окно, если вы сделаете это с тем же значением returnValue, тогда он откроет только одно диалоговое окно, потому что он может вернуть результат только одному int

CU_dev 01.08.2018 13:36

Другие вопросы по теме