我正在用Java做一个有趣的附带项目的文本编辑器。导出项目时,我将可执行的JAR文件转换为“ .exe”,以便可以将文本编辑器设置为打开“ .txt”文件的默认程序。我可以运行“ .exe”并写入文本,然后保存文件,然后保存文件,但是当我尝试使用文本编辑器打开文件时,文件的内容没有保存;但是,我可以使用记事本打开相同的文件,并显示文件的内容。该文件可以在Eclipse中很好地保存。当我尝试使用文本编辑器打开文件内容时,我需要对其进行修复以便显示文件内容?

这是我的代码:

public class Open extends JFrame implements KeyListener {

    JPanel panel = new JPanel();
    JTextArea textArea = new JTextArea();
    JScrollPane scrollPane = new JScrollPane(textArea);

    JMenuBar menuBar = new JMenuBar();
    JMenu menu;
    JMenuItem item;
    Font systemFont;

    public Open() {

        systemFont = new Font("Times New Roman", Font.PLAIN, 20);

        textArea.setLineWrap(true);
        textArea.setWrapStyleWord(false);
        textArea.setFont(systemFont);
        panel.setLayout(new BorderLayout());
        panel.add(scrollPane);
        add(panel);

        menu = new JMenu("File");
        item = new JMenuItem("Save As");

        item.setAccelerator(KeyStroke.getKeyStroke('S', Toolkit.getDefaultToolkit ().getMenuShortcutKeyMask()));

        item.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent ae) {

                JFileChooser JFC = new JFileChooser();
                File fileName = new File("");
                BufferedWriter writer = null;

                try {

                    int rVal = JFC.showSaveDialog(Open.this);
                    if(rVal == JFileChooser.APPROVE_OPTION) {

                        writer = new BufferedWriter(new FileWriter(JFC.getSelectedFile()));
                        writer.write(textArea.getText());

                    }
                } catch(Exception e) {
                    e.printStackTrace();
                } finally {
                    if(writer != null) {
                        try {
                            writer.close();
                        } catch(IOException e) {
                            e.printStackTrace();
                        }

                    }

                }

            }

        });

        menu.add(item);
        menuBar.add(menu);

        menu = new JMenu("Edit");
        item = new JMenuItem("Undo");

        menu.add(item);

        menu.add(item);


        menuBar.add(menu);



        add("North", menuBar);


        setLookAndFeel();
        frameDetails("Text Editor");

    }

    public void frameDetails(String title) {

        setSize(700, 500);
        setLocationRelativeTo(null);
        setTitle(title);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }

    public void setLookAndFeel() {

        try {

UIManager.setLookAndFeel(javax.swing.UIManager.getSystemLookAndFeelClassName());
            SwingUtilities.updateComponentTreeUI(this);

        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {

        Open editor = new Open();

    }

}


这是带有保存按钮的代码:

 item.addActionListener(new ActionListener() {

    public void actionPerformed(ActionEvent ae) {

        JFileChooser JFC = new JFileChooser();
        File fileName = new File("");
        BufferedWriter writer = null;

            try {

                int rVal = JFC.showSaveDialog(Open.this);
                if(rVal == JFileChooser.APPROVE_OPTION) {

                    writer = new BufferedWriter(new FileWriter(JFC.getSelectedFile()));
                    writer.write(textArea.getText());

                }
            } catch(Exception e) {
                e.printStackTrace();
            } finally {
                if(writer != null) {
                    try {
                        writer.close();
                    } catch(IOException e) {
                        e.printStackTrace();
                    }

                }

            }

        }

    });

最佳答案

您从不读取文本文件。为了做到这一点,使用类似这样的东西

public void loadFile(JTextArea area, String path, String file)
{
    try
    {
        area.read(new FileReader(path + file), "Default");
    }
    catch(IOException e)
    {
        e.printStackTrace();
    }
}


注意:您不必在方法中使用它。您可以只使用try - catch代码

关于java - Java程序未保存“.txt”文件的内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35805260/

10-11 22:21
查看更多