Java 如何使用选项对话框显示随机文本并询问用户是否希望将文本保存到文件

Java 如何使用选项对话框显示随机文本并询问用户是否希望将文本保存到文件,java,joptionpane,Java,Joptionpane,我已经创建了随机文本,但我不知道如何让人们保存它。您可以按如下方式执行: 向用户显示作业窗格,并提示输入文本 如果文本为空,即用户输入了一些字符串,则显示JFileChooser,并提示用户保存文件 如果showOpenDialog的返回值为JFileChooser.APPROVE\u选项,请使用常规I/O将文本保存到文件中 相关文件: 代码: 那你被困在哪一部分?作业窗格(请参阅)?或I/O(保存文件)(请参阅)? public class Test extends JFrame

我已经创建了随机文本,但我不知道如何让人们保存它。

您可以按如下方式执行:

  • 向用户显示
    作业窗格
    ,并提示输入文本
  • 如果文本为空,即用户输入了一些字符串,则显示
    JFileChooser
    ,并提示用户保存文件
  • 如果
    showOpenDialog
    的返回值为
    JFileChooser.APPROVE\u选项
    ,请使用常规I/O将文本保存到文件中
相关文件:
代码:
那你被困在哪一部分?
作业窗格
(请参阅)?或I/O(保存文件)(请参阅)?
public class Test extends JFrame implements ActionListener{
    final JFileChooser fc = new JFileChooser();

    public void saveTextToFile(String text) {
        
        final JFileChooser fileChooser = new JFileChooser();
        fileChooser.setFileFilter(new FileNameExtensionFilter(".txt", "txt"));
        fileChooser.setApproveButtonText("Save");
        int actionDialog = fileChooser.showOpenDialog(this);
        if (actionDialog != JFileChooser.APPROVE_OPTION) {
            return;
        }

        File file = fileChooser.getSelectedFile();
        if (!file.getName().endsWith(".txt")) {
            file = new File(file.getAbsolutePath() + ".txt");
        }

        try {
            BufferedWriter outFile = new BufferedWriter(new FileWriter(file));
            outFile.write(text);
            outFile.flush();
            outFile.close();
        } catch (Exception e) {
            e.printStackTrace();
        } 
    }
    @Override
    public void actionPerformed(ActionEvent arg0) {
        String text = JOptionPane
                .showInputDialog(null,
                        "Do you want to enter some random text and save it?");
        if (text != null) {
            saveTextToFile(text);
        }
    }
    private void createAndShowGui() {
        Test frame = new Test();
        JButton saveBtn = new JButton("Save Text Example");
        saveBtn.addActionListener(this);
        frame.add(saveBtn);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setLocationByPlatform(true);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new Test().createAndShowGui();
            }
        });
    }
}