我有以下应用程序代码。我在 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/