Dzień dobry wszystkimJak wybrać domyślny FileFilter podczas tworzenia okna dialogowego JFileChooser?
mam instancję javax.swing.JFileChooser i dodałem kilka wybieralne javax.swing.FileFilter s używając addChoosableFileFilter.
Jednak po wyświetleniu okna dialogowego (poprzez showSaveDialog) mój niestandardowy możliwy do wybrania FileFilter nie jest domyślnie zaznaczony.
Chciałem wybrać filtr „pliki obrazów” domyślnie ..
Jak wybrać filtr domyślny dialogowym javax.swing.JFileChooser?
SSCCEd:
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new java.lang.Runnable() {
@Override
public void run() {
new javax.swing.JFrame() {
{
final javax.swing.JButton button = new javax.swing.JButton("Save");
button.addMouseListener(new java.awt.event.MouseAdapter() {
@Override
public void mousePressed(java.awt.event.MouseEvent e) {
new javax.swing.JFileChooser() {
{
addChoosableFileFilter(NewFileFilter("Text Files", new String[] { "txt" }));
addChoosableFileFilter(NewFileFilter("Image Files", new String[] { "gif", "png", "jpg" }));
addChoosableFileFilter(NewFileFilter("Audio Files", new String[] { "mp3" }));
addChoosableFileFilter(NewFileFilter("Video Files", new String[] { "mp4", "avi" }));
showSaveDialog(button);
}
private javax.swing.filechooser.FileFilter NewFileFilter(final String desc, final String[] allowed_extensions) {
return new javax.swing.filechooser.FileFilter() {
@Override
public boolean accept(java.io.File f) {
if (f.isDirectory()) {
return true;
}
int pos = f.getName().lastIndexOf('.');
if (pos == -1) {
return false;
} else {
String extension = f.getName().substring(pos + 1);
for (String allowed_extension : allowed_extensions) {
if (extension.equalsIgnoreCase(allowed_extension)) {
return true;
}
}
return false;
}
}
@Override
public String getDescription() {
return desc;
}
};
}
};
}
});
add(button);
setSize(100, 100);
setVisible(true);
}
};
}
});
}
Dodano javax.swing.SwingUtilities.invokeLater w przykładzie. Dlaczego powinny być metody CamelCased, a nie PascalCased? – Pacerier
[Konwencje dotyczące kodu Java] (http://www.oracle.com/technetwork/java/javase/documentation/codeconvtoc-136057.html) – mKorbel
Ponieważ jest to standardowa konwencja w języku Java. –