Reputation: 388
I have the following code for an application. I used it in Ubuntu and it worked fine. But when I try to run it in macOS with the same java version, it has some problems. The first JFileChooser opens up and works fine. But the second JFileChooser is not displayed.
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);
}
}
}
Upvotes: 0
Views: 349
Reputation: 103578
Yes, this seems to be some buggy weirdness on macs. However, I found an easy fix for you:
There is no actual need to make another instance of JFileChooser here; you can simply delete this line:
fc = new JFileChooser();
and leave everything else, and now it'll pop up the file chooser dialog in directory mode twice, properly titled, just as you want.
This bug report seems to indicate, even though that was not reproducible according to someone at oracle, that this bug has been in there for a while.
Upvotes: 1