【问题标题】:JFileChooser(showSaveDialog) cant get the value of the extension file chosenJFileChooser(showSaveDialog) 无法获取所选扩展文件的值
【发布时间】:2013-05-30 21:21:01
【问题描述】:

我正在制作一个桌面应用程序,它有一个 JFileChooser(ShowSaveDialog) 函数.. 当我尝试保存示例文本文件时,程序没有得到我选择的扩展文件。我正在尝试使用 if else 或 switch 语句,但我无法弄清楚我将使用什么命令来获取字符串/Int选择 pdf、word 或 txt 扩展名作为文件扩展名时的条件值...

public class Save {
    static boolean flag = false;
    public static void main(String[] args) throws IOException, SQLException {
        JFileChooser saveFile = new JFileChooser();
        saveFile.setDialogTitle("Save as"); 

        FileNameExtensionFilter File_ext_txt =
            new FileNameExtensionFilter("Text Documents(*.txt)", "txt");
        FileNameExtensionFilter File_ext_pdf =
            new FileNameExtensionFilter("PDF", "pdf");
        FileNameExtensionFilter File_ext_doc =
            new FileNameExtensionFilter("Word 97-2003 Document", "doc");
        saveFile.addChoosableFileFilter(File_ext_pdf);
        saveFile.addChoosableFileFilter(File_ext_doc);
        saveFile.addChoosableFileFilter(File_ext_txt);

        FileFilter extension = saveFile.getFileFilter();
        int userSelection = saveFile.showSaveDialog(null);
        File File_Path = saveFile.getSelectedFile();
        String fullPath = File_Path.getAbsolutePath();
        String Ext = null;
        if (userSelection == JFileChooser.APPROVE_OPTION){
            if(extension == File_ext_txt){
                Ext = "txt";
            }

            File save = new File(fullPath+"."+Ext);
            System.out.println(extension);
            flag = save.createNewFile();
        }
    }
}

【问题讨论】:

  • 你试过什么没用?
  • 请编码,年轻的程序员。
  • 我只需要在 FileNameExtensionFilter File_ext_txt = new FileNameExtensionFilter("Text Documents(*.txt)", "txt"); 中获取“txt”字符串;

标签: java swing path jfilechooser filefilter


【解决方案1】:

我以前遇到过这个问题。这是我的一个程序中的一个实用功能,您可以使用它来代替 JFileChooser.getSelectedFile,来获取扩展名。

/**
 * Returns the selected file from a JFileChooser, including the extension from
 * the file filter.
 */
public static File getSelectedFileWithExtension(JFileChooser c) {
    File file = c.getSelectedFile();
    if (c.getFileFilter() instanceof FileNameExtensionFilter) {
        String[] exts = ((FileNameExtensionFilter)c.getFileFilter()).getExtensions();
        String nameLower = file.getName().toLowerCase();
        for (String ext : exts) { // check if it already has a valid extension
            if (nameLower.endsWith('.' + ext.toLowerCase())) {
                return file; // if yes, return as-is
            }
        }
        // if not, append the first extension from the selected filter
        file = new File(file.toString() + '.' + exts[0]);
    }
    return file;
}

【讨论】:

  • 谢谢!你为我节省了很多时间! :) 我一直在寻找使用方法.. 但你的方法就像一个魅力
猜你喜欢
  • 1970-01-01
  • 2012-02-23
  • 2014-03-11
  • 1970-01-01
  • 1970-01-01
  • 2014-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多