Java 生成一個記事本




實現打開與保存的記事本



1
package com.tanzhou.notepad.util; 2 3 import java.awt.Color; 4 import java.awt.event.ActionEvent; 5 import java.awt.event.ActionListener; 6 import java.io.BufferedReader; 7 import java.io.BufferedWriter; 8 import java.io.FileReader; 9 import java.io.FileWriter; 10 import java.io.IOException; 11 12 import javax.swing.JFileChooser; 13 import javax.swing.JFrame; 14 import javax.swing.JMenu; 15 import javax.swing.JMenuBar; 16 import javax.swing.JMenuItem; 17 import javax.swing.JTextArea; 18 19 /** 20 * @className NotepadTest.java 21 * 22 * @Description:TODO(生成一個記事本) 23 * 24 * @date 2018.7.23 25 * 26 * @author 銀桑的洞爺湖 27 * 28 */ 29 public class NotepadTest extends JFrame implements ActionListener{// 監聽事件 30 // 1.定義一個文本框 全局變量,在哪都可以使用 new的話一開始就會占用空間;null的話,創造了但不會占用空間 31 JTextArea jTextArea=null; 32 // 2.定義一個菜單欄 33 JMenuBar jMenuBar = null; 34 // 3.定義一個菜單"文件" 35 JMenu jMenu1 = null; 36 // 4.定義 打開和 37 JMenuItem jMenuItem1 = null; 38 // 5.保存 39 JMenuItem jMenuItem2 = null; 40 // 6.定義一個文件選擇 41 JFileChooser jFileChooser = null; 42 // 7.定義一個filereader 文件輸入流:從中讀取數據,打開時要用輸入流讀取 43 FileReader fileReader = null; 44 // 8.定義一個filewrite 文件輸出流:保存 保存到某個文件中 45 FileWriter fileWriter = null; 46 // 9.定義一個緩沖字符輸入流 緩沖區 可當成一個水池,每次給里面放一瓢水,等這個水池蓄滿以后一次性取出來 47 BufferedReader bufferedReader = null; 48 // 10.定義一個緩沖字符輸出流  49 BufferedWriter bufferedWrider = null; 50 51 /** 52 * @Description:TODO(構造函數) 方法名必須和類名相同 53 * @param 54 * @return 思路: 55 生成一個記事本 56 1.定義記事本的樣式 57 2.生成一個記事本 58 3.實現記事本的功能 打開和保存 59 */ 60 61 public NotepadTest(){ 62       // 1.實例化文本框 new 63       jTextArea=new JTextArea(); 64       // 2.實例化菜單欄 65       jMenuBar=new JMenuBar(); 66       // 3.實例化一個菜單"文件" 67       jMenu1=new JMenu("文件"); 68       // 4.實例化 打開 按鈕 69       jMenuItem1=new JMenuItem("打開"); 70       // 綁定監聽事件 監視者的意思 71       jMenuItem1.addActionListener(this);// this表當前對象 jMenuItem1 72       jMenuItem1.setActionCommand("打開");// setActionCommand:給哪個設置監聽事件 73       // 5.實例化 保存 按鈕 74       jMenuItem2 = new JMenuItem("保存"); 75       // 綁定監聽事件 監視者的意思 76       jMenuItem2.addActionListener(this);// this表當前對象 77       jMenuItem2.setActionCommand("保存");// setActionCommand:給哪個設置監聽事件 78       // 6.設置文本框的背景顏色 79       jTextArea.setBackground(Color.WHITE); 80   // 7.歸為 定位 81       // 將菜單欄添加到窗體中 82       this.setJMenuBar( jMenuBar ); 83       // 將菜單添加到菜單欄中 84       jMenuBar.add(jMenu1); 85       // 將“打開”和“保存”添加到“文件”菜單中 86       jMenu1.add(jMenuItem1); 87       jMenu1.add(jMenuItem2); 88       // 將文本框添加到窗體中 89       this.add(jTextArea); 90       // 8.設置記事本標題 91       this.setTitle("啊靈呀記事本"); 92       // 9.設置記事本大小 93       this.setSize(800,600); 94       // 10.當我們關閉窗口時 關閉進程 95       this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 96       // 11.顯示窗口 97       this.setVisible(true); 98    } 99 100     // 用流一般要拋異常 101 102 /** 103 * @Description:TODO(main函數 門) 104 * @param args 105 * @return void 106 */ 107 108     public static void main(String[] args){ 109       NotepadTest notepadTest=new NotepadTest(); 110     } 111 112     @Override 113     public void actionPerformed(ActionEvent e){ 114     // 實現 打開 和 保存 功能
      //點 打開 按鈕  
115     if(e.getActionCommand().equals("打開")){ 116       // 1.實例化jFileChooser 文件選擇 117       jFileChooser=new JFileChooser(); 118       // 2.定義一個標題 119       jFileChooser.setDialogTitle("選擇要打開的文件"); 120       // 3.設置一個默認的路徑 121       jFileChooser.showOpenDialog(null); 122       // 4.當點擊打開時,讓文件選擇框自動彈出 123       jFileChooser.setVisible(true); 124       //5.用address 保存用戶編輯文件的絕對路徑 125       String address=jFileChooser.getSelectedFile().getAbsolutePath(); 126      127       try{
128         // 6.實例化文件輸入流 129         fileReader=new FileReader(address); 130         //7.實例化緩沖字符輸入流 緩沖區 暫時存放進去 131         bufferedReader =new BufferedReader(fileReader); 132         //8.定義一個str判斷輸入的字符是否已經為空 133         String str=""; 134         //9.定義一個strAll接收文件的全部信息 135         String strAll=""; 136         //去緩沖區取數據並保存到strAll中 read()返回-1,讀取完 readLine():一行行讀 137         while((str=bufferedReader.readLine())!=null){ 138           strAll=str+"\r\n"; 139         } 140         jTextArea.setText(strAll);
141       }catch(IOException e1){ 142         e1.printStackTrace();
143       }finally{// 可保證里面的代碼一定會執行 144         try{ 145           bufferedReader.close(); 146           fileReader.close(); 147         }catch(IOException e1){ 148           e1.printStackTrace(); 149         } 150       } 151     }

      //點 保存 按鈕
      if(e.getActionCommand().equals("保存")){
        JFileChooser jFileChooser1=new JFileChooser();
        jFileChooser1.setDialogTitle("保存");
        jFileChooser1.showSaveDialog(null);

        jFileChooser1.setVisiable(true);
           try{

             //為fileWrite分配空間   輸出流
             fileWriter =new FileWriter(jFileChooser1.getSelectedFile().getAbsolutePath());
             //為bufferedWrite分配空間  緩沖輸出流
             bufferedWriter = new BufferedWriter(fileWriter);
             //保存進去
             bufferedWriter.write(this.jTextArea.getText());

           }catch (IOException e2) {
              e2.printStackTrace();
           }finally {

              //關閉文件
              try {
                fileWriter.close();
                bufferedWriter.close();
              } catch (IOException e3) {
                e3.printStackTrace();
                }
           }
152      }
     }
153 }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM