gpt4 book ai didi

java - 创建 JFileChooser 对话框时如何选择默认的 FileFilter?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:10:43 24 4
gpt4 key购买 nike

大家下午好

我有一个 javax.swing.JFileChooser 的实例我添加了一些可选的 javax.swing.FileFilter使用 addChoosableFileFilter .

然而,当我显示对话框时(通过 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);
}
};
}
});
}

最佳答案

使用 setFileFilter() :

FileFilter ff = NewFileFilter("Image Files", new String[] { "gif", "png", "jpg" });
addChoosableFileFilter(ff);
setFileFilter(ff);

为什么要子类化文件选择器,而不是仅仅使用它?为什么不遵守 Java 的命名约定(方法以小写字母开头)?为什么不遵守 Swing 的线程策略,该策略规定 Swing 组件必须仅在 EDT 中使用。

关于java - 创建 JFileChooser 对话框时如何选择默认的 FileFilter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9359514/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com