先上代码: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();
}
}
}
}
}
问题:
我输入文字的时候,输入了回车换行,但是保存以后没有换行,都在一行,该如何处理
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();
}
}
}
}
}
问题:
我输入文字的时候,输入了回车换行,但是保存以后没有换行,都在一行,该如何处理
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();
}
}
}
}
}
但在 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();
}
}
}
}}