【问题标题】:how do I make jfilechooser only accept .txt如何让 jfilechooser 只接受 .txt
【发布时间】:2013-04-02 18:47:29
【问题描述】:

我试图将我的联系人保存在我的表格中,但 filechosser 总是将其设置为所有文件。 有没有办法可以将其设置为仅接受 .txt 并将其设为默认或唯一选项。

savecontact.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        JFileChooser filesave = new JFileChooser();
        int returnVal = filesave.showSaveDialog(Main.this);
        if (returnVal == JFileChooser.APPROVE_OPTION) {
            try {
                File file = filesave.getSelectedFile();

                PrintWriter os = new PrintWriter(file);
                os.println("");
                for (int col = 0; col < table.getColumnCount(); col++) {
                    os.print(table.getColumnName(col) + "\t");
                }
                os.println("");
                os.println("");

                for (int row = 0; row < table.getRowCount(); row++) {
                    for (int col = 0; col < table.getColumnCount(); col++) {
                        os.print(table.getColumnName(col));
                        os.print(": ");
                        os.println(table.getValueAt(row, col));
                    }
                    os.println("");
                }
                os.close();
                System.out.println("Done!");
            } catch (IOException e1) {
                e1.printStackTrace();
            }
        }
    }
});

【问题讨论】:

    标签: java swing file-io jfilechooser


    【解决方案1】:

    你需要添加一个过滤器:

    JFileChooser jf = new JFileChooser();
    FileNameExtensionFilter filter = new FileNameExtensionFilter("TEXT FILES", "txt", "text");
    jf.setFileFilter(filter);
    

    【讨论】:

    • 代码可以工作,但我仍然需要在文件末尾输入 .txt 扩展名。有什么方法可以默认保存为.txt
    • 调用File file = filesave.getSelectedFile();后,可以查看文件名是否有“txt”后缀。如果不是,则创建一个包含扩展名的新 File 对象,然后继续使用 new PrintWriter(file2);(创建新的 File 对象实际上并不会创建文件。)
    • @Enwired 从代码的外观来看 - 保存一个表,其中一行中的值使用 \t 分隔符,行中的值使用新行,它应该真正被称为 .tsv(制表符分隔变量)!
    • @AndrewThompson 我原则上同意,但提问者想知道如何强制文件扩展名.txt。我只是陈述了一种方法来做到这一点。他可能有一些理由为什么他更喜欢.txt 而不是.tsv,这不关我的事。例如,Windows 机器通常不能识别扩展名.tsv,但它们确实识别.csv
    • 在弄乱了代码之后我能够弄清楚。感谢您的帮助
    【解决方案2】:

    这里有一些例子

    fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("Images", "jpg", "png", "gif", "bmp"));
    fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("*.pdf", "pdf"));
    fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("*.txt", "txt"));
    

    【讨论】:

    • 这是否会添加所有扩展而不删除之前添加的过滤器?
    【解决方案3】:

    您可以使用FileFilter 来做到这一点。

    创建具有必要条件的Filefilter。将此文件过滤器设置为JFileChooser,然后启动它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-30
      • 1970-01-01
      • 2011-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多