package com.note;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class NotePad extends JFrame implements ActionListener{
//定义相关组件
JTextArea jta = null;
JScrollPane jsp = null;
JMenuBar jmb = null;
JMenu jm1 = null;
JMenu jm2 = null;
JMenu jm3 = null;
JMenu jm4 = null;
JMenu jm5 = null;
JMenuItem jmi1 = null;
JMenuItem jmi2 = null;
JMenuItem jmi3 = null;
JMenuItem jmi4 = null;
JMenuItem jmi5 = null;
public static void main(String[] args) {
NotePad np = new NotePad();
}
//构造函数
public NotePad(){
jta = new JTextArea();
jsp = new JScrollPane(jta);//文本域加入滚动条
jmb = new JMenuBar();
jm1 = new JMenu("文件(F)");
jm1.setMnemonic('F');
jm2 = new JMenu("文件(E)");
jm2.setMnemonic('E');
jm3 = new JMenu("格式(O)");
jm3.setMnemonic('O');
jm4 = new JMenu("查看(V)");
jm4.setMnemonic('V');
jm5 = new JMenu("帮助(H)");
jm5.setMnemonic('H');
jmi1 = new JMenuItem("新建(N)");
jmi2 = new JMenuItem("打开(O)");
jmi2.addActionListener(this);
jmi2.setActionCommand("open");
jmi3 = new JMenuItem("保存(S)");
jmi3.addActionListener(this);
jmi3.setActionCommand("save");
this.setJMenuBar(jmb);
//加入菜单工具条
jmb.add(jm1);
jmb.add(jm2);
jmb.add(jm3);
jmb.add(jm4);
jmb.add(jm5);
//加入文件菜单项
jm1.add(jmi1);
jm1.add(jmi2);
jm1.add(jmi3);
this.add(jsp); //带滚动的文本域
this.setTitle("NotePad-Java Version");
this.setSize(800, 500);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
//选择打开文件
if (e.getActionCommand().equals("open")){
JFileChooser jfc = new JFileChooser();
jfc.setDialogTitle("请选择文件...");
jfc.showOpenDialog(null);
jfc.setVisible(true);
//得到打开文件的绝对路径
String filePath = jfc.getSelectedFile().getAbsolutePath();
FileReader fr = null;
BufferedReader br = null;
try {
fr = new FileReader(filePath);
br = new BufferedReader(fr);
//从文件中读取文本并显示到jta
String str = "";
String allStr = "";
while ((str = br.readLine()) != null){
allStr += str+"\r\n";
}
//显示文本
jta.setText(allStr);
} catch (Exception e1) {
// TODO 自动生成的 catch 块
e1.printStackTrace();
}finally{
try {
br.close();
fr.close();
} catch (Exception e1) {
// TODO 自动生成的 catch 块
e1.printStackTrace();
}
}
}
else if (e.getActionCommand().equals("save")){
JFileChooser jfc = new JFileChooser();
jfc.setDialogTitle("另存为...");
jfc.showSaveDialog(null);
jfc.setVisible(true);
//得到文件保存的路径
String filePath = jfc.getSelectedFile().getAbsolutePath();
//写入文件
FileWriter fw = null;
BufferedWriter bw = null;
try {
fw = new FileWriter(filePath);
bw = new BufferedWriter(fw);
//写入文本
bw.write(this.jta.getText());
} catch (Exception e1) {
// TODO 自动生成的 catch 块
e1.printStackTrace();
}finally{
try {
bw.close();
fw.close(); //FileWriter必须后关闭,否则文件不会正常保存
} catch (Exception e1) {
// TODO 自动生成的 catch 块
e1.printStackTrace();
}
}
}
}
}
IO编程——记事本开发
最新推荐文章于 2020-02-17 19:40:09 发布