Как я могу использовать диалоговое окно параметров, чтобы отобразить произвольный текст и спросить пользователя, желает ли он сохранить текст в файл

1

У меня уже есть случайный текст, но я не знаю, как позволить людям его сохранить.

Теги:
joptionpane

1 ответ

0
Лучший ответ

Вы можете сделать это следующим образом:

  • Отобразить JOptionPane для пользователя и запросить текст
  • если текст пуст, т.е. пользователь ввел некоторую строку, покажите JFileChooser и предложите пользователю сохранить файл
  • если возвращаемое значение showOpenDialog - это JFileChooser.APPROVE_OPTION, используйте обычный ввод-вывод для сохранения текста в файл.

Связанная документация:

Код:

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();
            }
        });
    }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню