繁体   English   中英

使用 jFileChooser 添加扩展

[英]Add extension with jFileChooser

我正在创建一个程序,它将创建具有不同扩展名的文件。 为此,我正在使用JFileChooser 我已经将FileFilter设置为只接受我想要的扩展名,但是当我选择一个扩展名时,我仍然需要自己在文件名中添加扩展名。 我该如何解决? 非常感谢!

您基本上必须在用户关闭对话框后自己添加扩展。

此示例允许用户指定以“.foo”或“.bar”结尾的文件,如果用户没有这样做,将添加该扩展名。

JFileChooser fileChooser = new JFileChooser();
fileChooser.setMultiSelectionEnabled(false);
fileChooser.removeChoosableFileFilter(fileChooser.getAcceptAllFileFilter());
fileChooser.setFileFilter(new FileNameExtensionFilter("Files ending in .foo", "foo"));
fileChooser.setFileFilter(new FileNameExtensionFilter("Files ending in .bar", "bar"));


int option = fileChooser.showSaveDialog(null);
if (option == JFileChooser.APPROVE_OPTION) {
  File file = fileChooser.getSelectedFile();

  if (file!=null) {
    FileFilter fileFilter = fileChooser.getFileFilter();
    if (fileFilter instanceof FileNameExtensionFilter && ! fileFilter.accept(file)) {
      // if the filter doesn't accept the filename, that must be because it doesn't have the correct extension
      // so change the extension to the first extension offered by the filter.
      FileNameExtensionFilter fileNameExtensionFilter = (FileNameExtensionFilter) fileFilter;
      String extension = fileNameExtensionFilter.getExtensions()[0];

      String newName = file.getName() + "." + extension;
      file = new File(file.getParent(), newName);

    }

    System.out.println("The selected file is: " + file.getAbsolutePath());
  }
}

为此,您必须在用户按下 JFileChooser 的验证按钮后获取用户选择的文件过滤器,并将文件过滤器描述与您的扩展名列表进行比较,然后再使用代码中的指定扩展名初始化文件对象(如果有匹配)。 不知道你会不会理解我。

        Modelexcel model = new Modelexcel();
        JFileChooser selectFile = new JFileChooser();;
        File file;

     JButton btnExporterVersExcel = new JButton("Exporter vers Excel");
        btnExporterVersExcel.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
        if(selectFile.showDialog(null, "Exporter")==JFileChooser.APPROVE_OPTION) {
                            String extension=selectFile.getFileFilter().getDescription();
                            if(extension.contains("(*.xlsx)")) {
                                file= new File(selectFile.getSelectedFile()+".xlsx");
                            }else if(extension.contains("(*.xls)")){
                                file= new File(selectFile.getSelectedFile()+".xls");
                            }
                            if(file.getName().endsWith("xls") || 
        file.getName().endsWith("xlsx")) {
                                JOptionPane.showMessageDialog(null, model.Export(file, table));
                            }else {
                                JOptionPane.showMessageDialog(null, "Format invalid");
                            }
                        }
}
        });

这是我的代码片段,用于以“.xls”和“.xlsx”格式保存文件。 希望通读一遍能帮到你

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM