I'm trying to use the JFileChooser
to get files for loading and saving. The dialog that comes up with openFileDialog()
works fine, but when I use the saveFileDialog()
method, the dialog window has all the file names greyed out. This happens with or without a FileFilter
(my example includes one to better show what I'm seeing).
Here's a minimal program to illustrate:
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.filechooser.FileNameExtensionFilter;
public class Temp extends JFrame {
public static void main(String[] args){
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JFileChooser chooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter("Text File", "txt");
chooser.setFileFilter(filter);
frame.setVisible(true);
chooser.showOpenDialog(null);
chooser.showSaveDialog(null);
}
}
Here's what I see in the Open dialog: Open Dialog
Here's what I see in the Save dialog: Save Dialog
Despite being greyed out, all the files in the save dialog are selectable.
I'm on Mac/Mountain Lion and Java 7 if it matters.
Is this expected behavior? Is there a way to change this?
(Edit: per comments by MadProgrammer + trashgod below, this appears to be consistent with the look + feel of other (native) Mac apps)
What I ended up doing was to use:
My save dialog looks like a save dialog, and the
FileFilter
greys out only files that fail its test.Mmm... I think, that show dialogs the way you do is not the best way
I think that could be generating a conflict. Why don't you try to use a JFrame to help you? Try with this piece of code, just to know if the problem is the saveDialog. Myabe then you can adapt it to your programming requirements.
As a matter of fact, you could try using the setLookAndFeel, I remember I had this issue working with my Macbook Pro.
That's controlled by the
FileChooserUI
delegate specific to a particular Look & Feel, e.g.AquaFileChooserUI
on Mac OS X. You can use a different L&F, (laboriously) write your ownFileChooserUI
, or develop a custom File Browser GUI.