下午好一切,如何在创建JFileChooser对话框时选择默认的FileFilter?
我有一个javax.swing.JFileChooser的实例,我使用addChoosableFileFilter增加了一些可选择的javax.swing.FileFilter秒。
但是,当我显示对话框(通过showSaveDialog)时,默认情况下未选择我自定义的可选FileFilter。
我想选择默认过滤器“映像文件” ..
我们如何选择为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);
}
};
}
});
}
在示例中添加了javax.swing.SwingUtilities.invokeLater。为什么方法应该是camelCased而不是PascalCased? – Pacerier 2012-02-20 10:43:39
[Java的代码约定](http://www.oracle.com/technetwork/java/javase/documentation/codeconvtoc-136057.html) – mKorbel 2012-02-20 10:49:23
因为这是Java中的标准约定。 – 2012-02-20 10:49:46