Java 如何在FileDialog中为文件类型设置筛选器

Java 如何在FileDialog中为文件类型设置筛选器,java,swing,filedialog,Java,Swing,Filedialog,我需要在文件对话框中添加JPG和PNG文件的类型,以添加到类型的文件中,从而允许用户仅查看这两种类型的文件这是我在GUI表单中单击按钮后的代码 jLabel2.setText(""); Frame frame = null; FileDialog fd = new FileDialog(frame, "Select Cover Photo"); fd.setAlwaysOnTop(true); fd.setVisible(true); if (fd.get

我需要在文件对话框中添加JPG和PNG文件的类型,以添加到类型的文件中,从而允许用户仅查看这两种类型的文件这是我在GUI表单中单击按钮后的代码

jLabel2.setText("");
Frame frame = null;
FileDialog fd = new FileDialog(frame, "Select Cover Photo");
fd.setAlwaysOnTop(true);
fd.setVisible(true);
if (fd.getFile() != null) {
    String path = new File(fd.getDirectory(), fd.getFile()).getAbsolutePath();
    if (new File(path).length() / 1024 > 1536) {
        JOptionPane.showMessageDialog(null, "picture size can't mor than 1.5 MG");
    } 
    else {
        System.out.println(path);
        jLabel2.setText(path);
        fd.dispose();
        System.out.println("size= " + new File(path).length() / 1024 + " KB");
    }
} else {
    System.out.println("No Data");
    fd.dispose();
}
我使用此方法在选择之前查看照片。请注意这张照片


基本上,您只需在
文件对话框
中放置一个过滤器,您可以这样做:

fd.setFilenameFilter((dir,name)->name.endsWith(“.jpeg”)| | name.endsWith(.png”);
但是我建议使用
JFileChooser
,它有更多的功能。 例如,可以通过以下方式添加多个文件筛选器:

FileChooser FileChooser=newfilechooser();
setInitialFileName(“您的文件”);
fileChooser.getExtensionFilters().addAll(
新建FileChooser.ExtensionFilter(“图像1”,“*.jpg”),
新建FileChooser.ExtensionFilter(“图像2”,“*.png”),
);
  • 链接到基于AWT的API文档
  • 链接到基于Swing的API文档
  • 链接到基于Java FX的API文档

  • 将JavaFX组件集成到基于Swing的应用程序中需要特殊处理,因为每个组件使用不同的线程。因此也必须考虑到这一点。

    使用
    JFileCooser
    ,如中所示。请注意,基于AWT的
    文件对话框(FileDialog
    :1)更为有限,因为它只能提供可在所有平台上保证的功能。2) 在Unix/Linux和Mac OS上看起来会有所不同。您将无法在这些平台上提供“Windows外观”文件对话框,用户在任何情况下都会期望不同的外观。在JFileCooser中,用户在选择之前无法看到图像请确保在浪费更多时间之前阅读对我的评论所做的编辑。..@andrewhompson我必须通过添加引用来改进我的答案,谢谢。