java - JFileChooser 在 Mac 中不显示窗口

标签 java swing

我有以下应用程序代码。我在 Ubuntu 中使用它并且运行良好。但是当我尝试在具有相同java版本的macOS中运行它时,它出现了一些问题。第一个 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);
        }
    }
}

最佳答案

是的,这在 Mac 上似乎有些奇怪的错误。不过,我为您找到了一个简单的解决方法:

这里没有实际需要创建另一个 JFileChooser 实例;您只需删除此行即可:

fc = new JFileChooser();

保留其他所有内容,现在它将在目录模式下弹出文件选择器对话框两次,标题正确,正如您想要的那样。

这个bug report似乎表明,尽管根据甲骨文某人的说法无法重现,但这个错误已经存在了一段时间。

关于java - JFileChooser 在 Mac 中不显示窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56921631/

相关文章:

java - 输入更新后不存储 JTextArea 中的预期字符串

java - 如何设置 JToggleButton 的切换状态?

java - 在已构建的表上设置 TableModel

java - 将 KeyEvent.VK_SPACE 转换为字符串空间

java - 这两个内部类对象有何不同?

java - 如何检查数组元素是否为空以避免Java中的NullPointerException

Java/Swing/Mac OSX : Converting JMenu to JPopupMenu using ScreenMenuBar

java - 获取java包名

java - JTable中如何改变行的颜色

java - 我怎样才能 "pack()"一个可打印的 Java Swing 组件?