1 /**
2 * 我的记事本(界面+功能)3 */
4 packagecom.test3;5
6 import javax.swing.*;7 import java.awt.event.*;8 importjava.io.BufferedReader;9 importjava.io.BufferedWriter;10 importjava.io.FileReader;11 importjava.io.FileWriter;12
13 public class NotePad extends JFrame implementsActionListener {14 //定义需要的组件
15 JTextArea jta = null;16
17 //菜单条
18 JMenuBar jmb = null;19
20 //定义JMenu(菜单栏按钮)
21 JMenu jml = null;22
23 //定义JMenuItem(功能按钮)
24 JMenuItem jmi1 = null;25 JMenuItem jmi2 = null;26 JMenuItem jmi3 = null;27
28 public static voidmain(String[] args) {29 NotePad notePad = newNotePad();30 }31
32 //构造函数
33 publicNotePad() {34 //创建jta
35 jta = newJTextArea();36 jmb = newJMenuBar();37 jml = new JMenu("菜单(M)");38 //设置助记符
39 jml.setMnemonic('M');40
41 //打开按钮
42 jmi1 = new JMenuItem("打开", new ImageIcon("edit.gif"));43 //添加图标的第二种方法44 //ImageIcon ic = new ImageIcon("edit.gif");45 //jmi1.setIcon(ic);46 //保存按钮
47 jmi2 = new JMenuItem("保存");48 //退出按钮
49 jmi3 = new JMenuItem("退出");50
51 Listen();52
53 //放入控件
54 this.setJMenuBar(jmb);55 //把JMenu放入到JMenuBar
56 jmb.add(jml);57 //把item放入到Menu中去
58 jml.add(jmi1);59 jml.add(jmi2);60 jml.add(jmi3);61
62 //放入到JFrame里
63 this.add(jta);64 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);65 this.setSize(400, 300);66 this.setVisible(true);67 }68
69 //监听事件
70 public voidListen()71 {72 //进行注册监听73 //打开
74 jmi1.addActionListener(this);75 jmi1.setActionCommand("open");76 //保存
77 jmi2.addActionListener(this);78 jmi2.setActionCommand("save");79 //退出
80 jmi3.addActionListener(this);81 jmi3.setActionCommand("quit");82 }83
84 @Override85 public voidactionPerformed(ActionEvent e) {86 //判断触发了哪个功能按钮87 //打开
88 if (e.getActionCommand().equals("open")) {89 //JFileChooser文件选择组件
90 JFileChooser jfc1 = newJFileChooser();91 //设置名字
92 jfc1.setDialogTitle("请选择文件...");93
94 jfc1.showOpenDialog(null);95 //显示
96 jfc1.setVisible(true);97
98 String file = null;99 try{100 //得到用户选择的文件绝对(全)路径
101 file =jfc1.getSelectedFile().getAbsolutePath();102
103 //System.out.println(filename);
104 FileReader fr = null;105 BufferedReader br = null;106 try{107 fr = newFileReader(file);108 br = newBufferedReader(fr);109 //从文件中读取信息并显示到jta
110 String s = "";111 String allCon = "";112 while ((s = br.readLine()) != null) {113 allCon += s + "rn";114 }115
116 //放置到jta即可
117 jta.setText(allCon);118
119 } catch(Exception ex) {120 ex.printStackTrace();121 } finally{122 try{123 if (br != null && fr != null) {124 br.close();125 fr.close();126 }127 } catch(Exception ex) {128 ex.printStackTrace();129 }130 }131 } catch(Exception ex) {132 System.out.println("未选中文件");133 //ex.printStackTrace();
134 }135 }136 //保存
137 else if (e.getActionCommand().equals("save")) {138 //出现保存对话框
139 JFileChooser jfc = newJFileChooser();140 jfc.setDialogTitle("另存为...");141 //按默认的方式显示
142 jfc.showSaveDialog(null);143 jfc.setVisible(true);144
145 String file = null;146 try{147 //得到用户希望把文件保存到的地址(文件绝对路径)
148 file =jfc.getSelectedFile().getAbsolutePath();149
150 //写入到指定文件
151 FileWriter fw = null;152 BufferedWriter bw = null;153 try{154 fw = newFileWriter(file);155 bw = newBufferedWriter(fw);156
157 bw.write(this.jta.getText());158 } catch(Exception ex) {159 ex.printStackTrace();160 } finally{161 try{162 //bw和fw的关闭顺序不能写反,否则会报错
163 if (bw != null && fw != null) {164 bw.close();165 fw.close();166 }167 } catch(Exception ex) {168 ex.printStackTrace();169 }170 }171 } catch(Exception ex) {172 System.out.println("未选中文件");173 //ex.printStackTrace();174 //System.out.println(ex.getMessage());
175 }176 }177 //退出
178 else if (e.getActionCommand().equals("quit")) {179 System.exit(0);180 }181 }182 }