Попросите пользователя ввести имя текстового файла, который будет создан - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть код для создания текстового файла, когда он нажимает кнопку «Создать отчет», но он генерирует только текстовый файл с заранее заданным именем «Report.txt».Моя желаемая функциональность заключается в том, что когда пользователь нажимает кнопку «Создать отчет», небольшое окно должно попросить пользователя ввести имя файла (возможно, использовать JOptionPane?) И соответственно нажать Ok.

else if (str.equals("Generate Report")) {

    try {
        FileWriter fw = new FileWriter("D:\\Report.txt");  //instead of report.txt, I want to user to type in the name
        BufferedWriter buffer = new BufferedWriter(fw);
        String title="Title: "+lb1.getText();
        DateFormat dateFormat = new SimpleDateFormat("MM/dd/YYYY HH:mm:ss");
        Date date = new Date();
        buffer.write(title);
        buffer.newLine();
        buffer.newLine();
        buffer.write("\nDate and Time of Creation: "+dateFormat.format(date));

        buffer.newLine();
        buffer.newLine();
        buffer.write("\nList of activities & their duration:"); 
        buffer.newLine();
        buffer.newLine();
        buffer.write("List of all paths with the activity names and total duration:");
        buffer.newLine();

        String txtArea = ta1.getText();
        String[] txtArray = txtArea.split("\n");

        for (int i = 0; i < txtArray.length; i++) {
            buffer.write(txtArray[i]);
            buffer.newLine();
        }

        buffer.close();
        ta1.setText("Report Generated");

        buffer.close();
    } catch (Exception e) {
        System.out.println(e);
    }
}

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

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

package save;

import java.io.File;
import java.util.Optional;

import javax.swing.JFileChooser;
import javax.swing.JFrame;

public class FileSave {

    public static void main(String[] args) {
        JFrame jFrame = new JFrame("someframe");
        jFrame.setVisible(true);
        Optional<File> fileLocation = new FileSave().showSaveDialog(jFrame);
        if (fileLocation.isPresent()) {
            File saveLocation = fileLocation.get();
            System.out.println(saveLocation);
            // TODO your save logic goes here.
        }

    }

    public Optional<File> showSaveDialog(JFrame frame) {

        String property = System.getProperty("user.home");
        File userHome = new File(property);
        JFileChooser chooser = new JFileChooser(userHome);
        chooser.setDialogType(JFileChooser.SAVE_DIALOG);
        chooser.setSelectedFile(new File(userHome, "Report.txt"));

        int returnVal = chooser.showSaveDialog(frame);
        if (returnVal == JFileChooser.APPROVE_OPTION) {
            return Optional.of(chooser.getSelectedFile());
        }
        return Optional.empty();
    }
}
0 голосов
/ 16 ноября 2018

JOptionPane, вероятно, самое простое решение.

else if(str.equals("Generate Report"))
{

        try {
            String filename = JOptionPane.showInputDialog("Please input a filename");
            FileWriter fw = new FileWriter(filename);
            ...

Если вы хотите сохранить файл в определенном месте и дать ему конкретное расширение, вы можете указать их в конструкторе FileWriter, т.е.

FileWriter fw = new FileWriter("D:\\" + filename +".txt")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...