Xin chào tất cả,Làm thế nào để chọn FileFilter mặc định khi tạo một hộp thoại JFileChooser?
Tôi có một thể hiện của một javax.swing.JFileChooser và tôi bổ sung thêm một vài choosable javax.swing.FileFilter s sử dụng addChoosableFileFilter.
Tuy nhiên khi tôi hiển thị hộp thoại (qua số showSaveDialog), FileFilter tùy chỉnh của tôi không được chọn theo mặc định.
tôi muốn chọn lọc "Hình ảnh Files" theo mặc định ..
Làm thế nào để chúng ta chọn một bộ lọc mặc định cho hộp thoại 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);
}
};
}
});
}
Đã thêm javax.swing.SwingUtilities.invokeLater trong ví dụ. Tại sao phương thức nên là camelCased chứ không phải PascalCased? – Pacerier
[Quy ước mã cho Java] (http://www.oracle.com/technetwork/java/javase/documentation/codeconvtoc-136057.html) – mKorbel
Bởi vì đó là quy ước chuẩn trong Java. –