JAVA 運用流編程實現簡單的"記事本"功能
阿新 • • 發佈:2019-05-09
ade perf operation ssa string 文件絕對路徑 構造 選擇 moni
一、概要
1.功能介紹
2.實現的思路及步驟代碼
3.完整代碼
二、功能
運用IO流和Swing實現簡單的記事本功能(打開、保存、退出)
三、思路及實現步驟
1.在構造函數中畫出操作界面
1 //創建jta 2 jta = new JTextArea(); 3 jmb = new JMenuBar(); 4 jml = new JMenu("菜單(M)"); 5 //設置助記符 6 jml.setMnemonic(‘M‘); 7 8 //打開按鈕 9 jmi1 = newView CodeJMenuItem("打開", new ImageIcon("edit.gif")); 10 //添加圖標的第二種方法 11 //ImageIcon ic = new ImageIcon("edit.gif"); 12 //jmi1.setIcon(ic); 13 //保存按鈕 14 jmi2 = new JMenuItem("保存"); 15 //退出按鈕 16 jmi3 = new JMenuItem("退出"); 17 18 //放入控件 19 this.setJMenuBar(jmb); 20 //把JMenu放入到JMenuBar 21 jmb.add(jml); 22 //把item放入到Menu中去 23 jml.add(jmi1); 24 jml.add(jmi2); 25 jml.add(jmi3); 26 27 //放入到JFrame裏 28 this.add(jta); 29 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);30 this.setSize(400, 300); 31 this.setVisible(true);
界面展示:
2.註冊監聽事件(判斷點了哪個按鈕)
1 //進行註冊監聽 2 //打開 3 jmi1.addActionListener(this); 4 jmi1.setActionCommand("open"); 5 //保存 6 jmi2.addActionListener(this); 7 jmi2.setActionCommand("save"); 8 //退出 9 jmi3.addActionListener(this); 10 jmi3.setActionCommand("quit");View Code
3.根據事件反饋判斷要進行的操作(根據點擊的按鈕來判斷要做什麽事)
①打開
1 if (e.getActionCommand().equals("open")) { 2 //JFileChooser文件選擇組件 3 JFileChooser jfc1 = new JFileChooser(); 4 //設置名字 5 jfc1.setDialogTitle("請選擇文件..."); 6 7 jfc1.showOpenDialog(null); 8 //顯示 9 jfc1.setVisible(true); 10 11 String file = null; 12 try { 13 //得到用戶選擇的文件絕對(全)路徑 14 file = jfc1.getSelectedFile().getAbsolutePath(); 15 16 //System.out.println(filename); 17 FileReader fr = null; 18 BufferedReader br = null; 19 try { 20 fr = new FileReader(file); 21 br = new BufferedReader(fr); 22 //從文件中讀取信息並顯示到jta 23 String s = ""; 24 String allCon = ""; 25 while ((s = br.readLine()) != null) { 26 allCon += s + "\r\n"; 27 } 28 29 //放置到jta即可 30 jta.setText(allCon); 31 32 } catch (Exception ex) { 33 ex.printStackTrace(); 34 } finally { 35 try { 36 if (br != null && fr != null) { 37 br.close(); 38 fr.close(); 39 } 40 } catch (Exception ex) { 41 ex.printStackTrace(); 42 } 43 } 44 } catch (Exception ex) { 45 System.out.println("未選中文件"); 46 //ex.printStackTrace(); 47 } 48 }View Code
②保存
1 if (e.getActionCommand().equals("save")) { 2 //出現保存對話框 3 JFileChooser jfc = new JFileChooser(); 4 jfc.setDialogTitle("另存為..."); 5 //按默認的方式顯示 6 jfc.showSaveDialog(null); 7 jfc.setVisible(true); 8 9 String file = null; 10 try { 11 //得到用戶希望把文件保存到的地址(文件絕對路徑) 12 file = jfc.getSelectedFile().getAbsolutePath(); 13 14 //寫入到指定文件 15 FileWriter fw = null; 16 BufferedWriter bw = null; 17 try { 18 fw = new FileWriter(file); 19 bw = new BufferedWriter(fw); 20 21 bw.write(this.jta.getText()); 22 } catch (Exception ex) { 23 ex.printStackTrace(); 24 } finally { 25 try { 26 //bw和fw的關閉順序不能寫反,否則會報錯 27 if (bw != null && fw != null) { 28 bw.close(); 29 fw.close(); 30 } 31 } catch (Exception ex) { 32 ex.printStackTrace(); 33 } 34 } 35 } catch (Exception ex) { 36 System.out.println("未選中文件"); 37 //ex.printStackTrace(); 38 //System.out.println(ex.getMessage()); 39 } 40 }View Code
③退出
1 if (e.getActionCommand().equals("quit")) { 2 System.exit(0); 3 }View Code
四、附上完整代碼
1 /** 2 * 我的記事本(界面+功能) 3 */ 4 package com.test3; 5 6 import javax.swing.*; 7 import java.awt.event.*; 8 import java.io.BufferedReader; 9 import java.io.BufferedWriter; 10 import java.io.FileReader; 11 import java.io.FileWriter; 12 13 public class NotePad extends JFrame implements ActionListener { 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 void main(String[] args) { 29 NotePad notePad = new NotePad(); 30 } 31 32 //構造函數 33 public NotePad() { 34 //創建jta 35 jta = new JTextArea(); 36 jmb = new JMenuBar(); 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 void Listen() 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 @Override 85 public void actionPerformed(ActionEvent e) { 86 //判斷觸發了哪個功能按鈕 87 //打開 88 if (e.getActionCommand().equals("open")) { 89 //JFileChooser文件選擇組件 90 JFileChooser jfc1 = new JFileChooser(); 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 = new FileReader(file); 108 br = new BufferedReader(fr); 109 //從文件中讀取信息並顯示到jta 110 String s = ""; 111 String allCon = ""; 112 while ((s = br.readLine()) != null) { 113 allCon += s + "\r\n"; 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 = new JFileChooser(); 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 = new FileWriter(file); 155 bw = new BufferedWriter(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 }View Code
JAVA 運用流編程實現簡單的"記事本"功能