先上代码:package game.tank;import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.Box.Filler;public class TxtDemo extends JFrame implements ActionListener
{
JTextArea jta;
JMenuBar jmb;
JMenu jm;
JMenuItem jmi1,jmi2;
public TxtDemo()
{
jta = new JTextArea();
jmb = new JMenuBar();
jm = new JMenu("文件(F)");
jmi1 = new JMenuItem("打开(O)");
jmi2 = new JMenuItem("保存(S)");

jm.add(jmi1);
jm.add(jmi2);

jmb.add(jm);

this.setJMenuBar(jmb);
this.add(jta);
// 添加滚动条
this.add(new JScrollPane(jta),BorderLayout.CENTER);


jmi1.addActionListener(this);
jmi1.setActionCommand("open");

jmi2.addActionListener(this);
jmi2.setActionCommand("save");

this.setSize(400, 300);
this.setLocation(500, 300);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}
public static void main(String[] args)
{ new TxtDemo();
}
@Override
public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand().equals("open"))
{
JFileChooser jfc = new JFileChooser();
jfc.showOpenDialog(null);
jfc.setVisible(true);

String filepath = jfc.getSelectedFile().getPath();

FileReader fr = null;
BufferedReader br = null;
try
{
fr = new FileReader(filepath);
br = new BufferedReader(fr);

String s = "";
String allcon = "";
while((s=br.readLine())!=null)
{
allcon +=s+"\r\n";
}
jta.setText(allcon);
}
catch (Exception e2)
{
e2.printStackTrace();
}
finally
{
try
{
fr.close();
br.close();
}
catch (Exception e3)
{
e3.printStackTrace();
}
}

}
if(e.getActionCommand().equals("save"))
{
JFileChooser jfc = new JFileChooser();
jfc.showSaveDialog(null);
jfc.setVisible(true);

String file = jfc.getSelectedFile().getAbsolutePath();
// 准备写入文件
FileWriter fw = null;
BufferedWriter bw = null;
try
{
fw = new FileWriter(file);
bw = new BufferedWriter(fw);

bw.write(this.jta.getText());

}
catch (Exception e2)
{
e2.printStackTrace();
}
finally
{
try
{
// 此处一定要注意,先关闭BufferedWriter,然后再关闭FileWriter,要不然会出错。
bw.close();
fw.close();
}
catch (Exception e3)
{
e3.printStackTrace();
}
}
}
}
}
问题:
我输入文字的时候,输入了回车换行,但是保存以后没有换行,都在一行,该如何处理

解决方案 »

  1.   

    package com.test;
    import java.awt.BorderLayout;public class TxtDemo extends JFrame implements ActionListener
    {
        JTextArea jta;
        JMenuBar jmb;
        JMenu jm;
        JMenuItem jmi1,jmi2;
        public TxtDemo()
        {
            jta = new JTextArea();
            jmb = new JMenuBar();
            jm = new JMenu("文件(F)");
            jmi1 = new JMenuItem("打开(O)");
            jmi2 = new JMenuItem("保存(S)");
            
            jm.add(jmi1);
            jm.add(jmi2);
            
            jmb.add(jm);
            
            this.setJMenuBar(jmb);
            this.add(jta);
    //        添加滚动条
            this.add(new JScrollPane(jta),BorderLayout.CENTER);
            
            
            jmi1.addActionListener(this);
            jmi1.setActionCommand("open");
            
            jmi2.addActionListener(this);
            jmi2.setActionCommand("save");
            
            this.setSize(400, 300);
            this.setLocation(500, 300);
            this.setVisible(true);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            
        }
        public static void main(String[] args)
        {        new TxtDemo();
        }
        public void actionPerformed(ActionEvent e)
        {
            if(e.getActionCommand().equals("open"))
            {
                JFileChooser jfc = new JFileChooser();
                jfc.showOpenDialog(null);
                jfc.setVisible(true);
                
                String filepath = jfc.getSelectedFile().getPath();
                
                FileReader fr = null;
                BufferedReader br = null;
                try
                {
                    fr = new FileReader(filepath);
                    br = new BufferedReader(fr);
                    
                    String s = "";
                    String allcon = "";
                    while((s=br.readLine())!=null)
                    {
                        allcon +=s+"\r\n";
                    }
                    jta.setText(allcon);
                }
                catch (Exception e2)
                {
                    e2.printStackTrace();
                }
                finally
                {
                    try
                    {
                        fr.close();
                        br.close();
                    }
                    catch (Exception e3)
                    {
                        e3.printStackTrace();
                    }
                }
                
            }
            if(e.getActionCommand().equals("save"))
            {
                JFileChooser jfc = new JFileChooser();
                jfc.showSaveDialog(null);
                jfc.setVisible(true);
                
                String file = jfc.getSelectedFile().getAbsolutePath();
    //            准备写入文件
                FileWriter fw = null;
                PrintWriter pw = null;
                //分割成一行一行读
                String[] lines=jta.getText().split("\n");
                try
                {
                    fw = new FileWriter(file);
                    pw = new PrintWriter(fw);
                    for(int i=0;i<lines.length;i++)
                    {
                    pw.println(lines[i]);
                    }
                    
                }
                catch (Exception e2)
                {
                    e2.printStackTrace();
                }
                finally
                {
                    try
                    {
    //                    此处一定要注意,先关闭BufferedWriter,然后再关闭FileWriter,要不然会出错。
                        pw.close();
                        fw.close();
                    }
                    catch (Exception e3)
                    {
                        e3.printStackTrace();
                    }
                }
            }
        }
        }
      

  2.   

    你试试直接写读的时候的String,而不是通过jta.getText()
      

  3.   

    没怎么写过 swing 。不过你这个应该是 JTextArea 的问题吧。如果在 Linux 下你这个应该是有换行效果的。
    但在 Windows 下需要将 \n 换成 \r\n 才有换行效果。但这么写并不算好的解决方案,不熟悉 swing 。能力所及,将就吧,呵呵。public class TxtDemo extends JFrame implements ActionListener {
    JTextArea jta;
    JMenuBar jmb;
    JMenu jm;
    JMenuItem jmi1, jmi2; public TxtDemo() {
    jta = new JTextArea();
    jmb = new JMenuBar();
    jm = new JMenu("文件(F)");
    jmi1 = new JMenuItem("打开(O)");
    jmi2 = new JMenuItem("保存(S)"); jm.add(jmi1);
    jm.add(jmi2); jmb.add(jm); this.setJMenuBar(jmb);
    this.add(jta);
    // 添加滚动条
    this.add(new JScrollPane(jta), BorderLayout.CENTER); jmi1.addActionListener(this);
    jmi1.setActionCommand("open"); jmi2.addActionListener(this);
    jmi2.setActionCommand("save"); this.setSize(400, 300);
    this.setLocation(500, 300);
    this.setVisible(true);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) { new TxtDemo();
    } public void actionPerformed(ActionEvent e) {
    if (e.getActionCommand().equals("open")) {
    JFileChooser jfc = new JFileChooser();
    jfc.showOpenDialog(null);
    jfc.setVisible(true); String filepath = jfc.getSelectedFile().getPath(); FileReader fr = null;
    BufferedReader br = null;
    try {
    fr = new FileReader(filepath);
    br = new BufferedReader(fr); String s = "";
    String allcon = "";
    while ((s = br.readLine()) != null) {
    allcon += s + "\r\n";
    }
    jta.setText(allcon);
    } catch (Exception e2) {
    e2.printStackTrace();
    } finally {
    try {
    fr.close();
    br.close();
    } catch (Exception e3) {
    e3.printStackTrace();
    }
    } }
    if (e.getActionCommand().equals("save")) {
    JFileChooser jfc = new JFileChooser();
    jfc.showSaveDialog(null);
    jfc.setVisible(true); String file = jfc.getSelectedFile().getAbsolutePath();
    // 准备写入文件
    FileWriter fw = null;
    BufferedWriter bw = null;
    try {
    fw = new FileWriter(file);
    bw = new BufferedWriter(fw); bw.write(this.jta.getText().replace("\n", "\r\n")); } catch (Exception e2) {
    e2.printStackTrace();
    } finally {
    try {
    // 此处一定要注意,先关闭BufferedWriter,然后再关闭FileWriter,要不然会出错。
    bw.close();
    fw.close();
    } catch (Exception e3) {
    e3.printStackTrace();
    }
    }
    }
    }}