JFileChooser не отображает окно в Mac - PullRequest
0 голосов
/ 07 июля 2019

У меня есть следующий код для приложения.Я использовал его в Ubuntu, и он работал нормально.Но когда я пытаюсь запустить его в macOS с той же версией Java, у него возникают некоторые проблемы.Первый JFileChooser открывается и работает нормально.Но второй JFileChooser не отображается.

import javax.swing.*;
import java.io.IOException;

public class App {

    public static void main(String[] args) {
        String segmentedImageDir="", segmentedImageSuffix="", originalImageDir="";
        JFileChooser fc = new JFileChooser();
        fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        fc.setDialogTitle("Select Original Images Directory");
        System.out.println("Getting Original Images Directory");
        if(fc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION){
            originalImageDir = fc.getSelectedFile().getAbsolutePath();
        }
        System.out.println("Original Images Directory: "+originalImageDir);
        fc = new JFileChooser();
        fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        fc.setDialogTitle("Select Segmented Images Directory");
        System.out.println("Getting Segmented Images Directory");
        //Everything works fine till here
        if(fc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION){
            segmentedImageDir = fc.getSelectedFile().getAbsolutePath();
        }
        System.out.println("Segmented Images Directory: "+segmentedImageDir);

        segmentedImageSuffix = MainFrame.getSegmentedImageSuffix();

        try{
            new MainFrame(originalImageDir, segmentedImageDir, segmentedImageSuffix);
        } catch (IOException ioe){
            ioe.printStackTrace();
            JOptionPane.showMessageDialog(null, "Could not load image", "IOException", JOptionPane.ERROR_MESSAGE);
        }
    }
}

1 Ответ

1 голос
/ 07 июля 2019

Да, это кажется странной ошибкой на Mac.Тем не менее, я нашел для вас простое решение:

Нет необходимости создавать еще один экземпляр JFileChooser;Вы можете просто удалить эту строку:

fc = new JFileChooser();

и оставить все остальное, и теперь у вас дважды появится диалоговое окно выбора файлов в режиме каталога, с правильным названием, как вы хотите.

Этот отчет об ошибке , кажется, указывает, хотя это и не было воспроизведено, по словам кого-то из оракула, что эта ошибка была там некоторое время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...