import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import javax.swing.ImageIcon;
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;
public class NotePad extends JFrame implements ActionListener{
JScrollPane jsp=null;
JTextArea jta=null;
JMenuBar jmb=null;
JMenu jm1=null;
JMenuItem jmi1=null;
JMenuItem jmi2=null;
public NotePad() {
jta=new JTextArea();
jsp=new JScrollPane(jta);
jm1=new JMenu("文件");
jm1.setMnemonic('F');//助记符。注意这里字符用单引号,字符串才用双引号
jmi1=new JMenuItem("打开", new ImageIcon("bomb_2.gif"));
jmi1.setActionCommand("open");
jmi1.addActionListener(this);
jmi2=new JMenuItem("保存");
jmi2.setActionCommand("save");
jmi2.addActionListener(this);
jmb=new JMenuBar();
jm1.add(jmi1);
jm1.add(jmi2);
jmb.add(jm1);
add(jmb,"North");
add(jsp);
setSize(400, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
NotePad np=new NotePad();
}
@Override
public void actionPerformed(ActionEvent arg0) {
if(arg0.getActionCommand().equals("open")){
JFileChooser jfc=new JFileChooser();
jfc.setDialogTitle("打开文件");
jfc.showOpenDialog(null);
String file=jfc.getSelectedFile().getAbsolutePath();
FileReader fr=null;
BufferedReader br=null;
try {
fr=new FileReader(file);
br=new BufferedReader(fr);
String totalstr="";
String str="";
while((str=br.readLine())!=null){//这里已经执行了次 br.readLine(),str里面不再是空
System.out.print(str+"\r\n");//逐行打印出文件字符
totalstr+=str+"\r\n";//逐行保存读取的每一行到字符串str
//str+=str+"\r\n";//不能这么写,因为条件语句里面已经执行了str=br.readLine(),条件里面每次的str是不同行的字符
}
jta.setText(totalstr);
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
fr.close();
br.close();
} catch (Exception e2) {
// TODO: handle exception
}
}
jfc.setVisible(true);
System.out.println("open"+file);
}else if(arg0.getActionCommand().equals("save")){
JFileChooser jfc=new JFileChooser();
jfc.setDialogTitle("另存为");
jfc.showSaveDialog(null);
String file=jfc.getSelectedFile().getAbsolutePath();
String conStr=jta.getText();
FileWriter fw=null;
BufferedWriter bw=null;
try {
fw=new FileWriter(file);//将数据输出到磁盘文件file的对象流
bw=new BufferedWriter(fw);
bw.write(conStr);//将字符串conStr输出
bw.flush();//刷新缓存或关闭才能将缓存中的数据输出
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
bw.close();
fw.close();
} catch (Exception e2) {
// TODO: handle exception
}
}
jfc.setVisible(true);
System.out.println("save");
}
}
}