IO程式設計——記事本開發
阿新 • • 發佈:2019-02-14
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(); } } } } }