java - JFileChooser 保存具有多个文件扩展名的对话框

标签 java jfilechooser file-extension writer

我正在尝试使用 JFileChooser 和用于 .txt 选项的 TxtWriter 类以及 XmlWriter 保存文件.xml 选项的 code> 类。起初我只尝试创建 txt 选项,但它似乎不起作用。

这是JFileChooser的代码:

JMenuItem mntmCreate = new JMenuItem("Create Report");
mntmCreate.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        JFileChooser chooser = new JFileChooser();
        switch (chooser.showSaveDialog(frame)){
        case JFileChooser.APPROVE_OPTION:
            File fileToWrite = chooser.getSelectedFile();
            TxtWriter txtwriter = new TxtWriter(taxpayer);
            txtwriter.writeReport(taxpayer);
            System.out.println("Report taxpayer: " +taxpayer.toString());
        }
    }
});

TxtWriter:

public class TxtWriter implements Writer {

    public TxtWriter(Taxpayer taxpayer) {
        writeReport(taxpayer);
    }

    public void writeReport(Taxpayer taxpayer) {

        PrintWriter writer;
        try {
            writer = new PrintWriter("Report.txt", "UTF-8");
            printToWriterTaxpayerInfo(taxpayer, writer);
            printToWriterTaxDetails(taxpayer, writer);
            printToWriterReceiptsAmountDetails(taxpayer, writer);
            writer.close();

        } catch (FileNotFoundException | UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public void printToWriterTaxpayerInfo(Taxpayer taxpayer, PrintWriter writer) {
        writer.println("Name: " + taxpayer.getName());
        writer.println("AFM: " + taxpayer.getTaxRegistrationNumber());
        writer.println("Status: " + taxpayer.getStatus());
        writer.println("Income: " + taxpayer.getIncome());
    }

    public void printToWriterTaxDetails(Taxpayer taxpayer, PrintWriter writer) {
        writer.println("Basic Tax: " + taxpayer.getBasicTax());
        writer.println("Tax Increase: " + taxpayer.getTaxIncrease());
        writer.println("Total Tax: "
                + (taxpayer.getBasicTax() + taxpayer.getTaxIncrease()));
    }

    public void printToWriterReceiptsAmountDetails(Taxpayer taxpayer,
            PrintWriter writer) {
        writer.println("Total Receipts Gathered: "
                + taxpayer.computeTotalReceiptsGathered());
        writer.println("Entertainment: "
                + taxpayer.computeReceiptsAmountForKindEntertainment());
        writer.println("Basic: " + taxpayer.computeReceiptsAmountForKindBasic());
        writer.println("Travel: "
                + taxpayer.computeReceiptsAmountForKindTravel());
        writer.println("Health: "
                + taxpayer.computeReceiptsAmountForKindHealth());
        writer.println("Other: " + taxpayer.computeReceiptsAmountForKindOther());
    }
}

同样,xml 文件有一个 XmlWriter 类。
我想使用这两个编写器类来创建不同的文件类型。

最佳答案

您可以在 JFileChooser 中添加过滤器以仅允许文本和 xml 文件。

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

或使用addChoosableFileFilter

fc.addChoosableFileFilter(new FileNameExtensionFilter("XMl and text Files", "xml","txt");

关于java - JFileChooser 保存具有多个文件扩展名的对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30708832/

相关文章:

使用 Selenium TestNG 和 Java 执行第二个 @test 带注释的方法时出现 java.lang.NullPointerException

java - Hazelcast 的开源替代品?

macos - 将文件扩展名与我的应用程序相关联

php - PHP 是否具有在给定有效内容类型的情况下返回正确文件扩展名的函数?

java - 为什么有些库会与源代码和 javadoc jar 文件一起分发?

java - Android - Preference OnPreferenceClick 永远不会被调用

java - 使用 JFileChooser 设置默认保存扩展

java - 了解Java IO,使用JFileChooser打开/关闭文件以及打开/关闭/保存二进制文件

java - 使用 JFileChooser 将某些文本从 JTextArea 保存到文件

python - 检查非字符串的文件扩展名