1. 程式人生 > >通過JAVA程式寫一個簡易的記事本

通過JAVA程式寫一個簡易的記事本

程式碼如下:

/**
 * @作者:劉猛
 * @時間:2017.11.01
 * @功能:簡單的記事本功能
 * @涉及主要知識點:Java的圖形化介面、ActiveListener監聽、檔案的io流
 * 	 
 **/
package com.notepal;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;

import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JTextArea;
//讓其繼承視窗類
public class NotePal extends JFrame implements ActionListener {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	//定義一個文字框
	JTextArea jTextArea = null;
	//定義一個選單欄
	JMenuBar jMenuBar = null;
	//定義一個選單
	JMenu jMenu1 = null;
	//定義一個“開啟”子選項
	JMenuItem jMenuItem1 = null;
	//定義一個“儲存”子選項
	JMenuItem jMenuItem2 = null;
	//定義一個檔案選擇
	JFileChooser jFileChooser = null;
	//定義一個FileReader檔案輸入流
	FileReader fileReader = null;
	//定義一個FileWriter輸出流
	FileWriter fileWriter = null;
	//定義一個緩衝字元輸入流
	BufferedReader bufferedReader = null;
	//定義一個緩衝字元輸出流
	BufferedWriter bufferedWriter = null;
	@SuppressWarnings("unused")
	public static void main(String[] args) {
		// TODO Auto-generated method stub
        //例項化
		NotePal notePal = new NotePal();
	}
	//建構函式
	public NotePal()
	{
		//例項化jTextArea
		jTextArea = new JTextArea();
		//例項化jMenuBar
		jMenuBar = new JMenuBar();
		//例項化就jMenu1,並設定其名字為“檔案”
		jMenu1 = new JMenu("檔案");
		//例項化就MenuItem1,並將其命名為“開啟”
		jMenuItem1 = new JMenuItem("開啟");
		//實現對jMenuItem1的監聽
		jMenuItem1.addActionListener(this);
		jMenuItem1.setActionCommand("開啟");
		//例項化就MenuItem2,並將其命名為“儲存”
		jMenuItem2 = new JMenuItem("儲存");
		//實現對jMenuItem2的監聽
		jMenuItem2.addActionListener(this);
		jMenuItem2.setActionCommand("儲存");
		
		//設定jTextArea的背景顏色為
		jTextArea.setBackground(Color.CYAN);
		
		//將元件新增上各自的位置
		//將jMenuBar新增到JFrame中
		this.setJMenuBar(jMenuBar);
		//將jMenu新增到jMenuBar中
		jMenuBar.add(jMenu1);
		//將jMenuTItem1新增到Jmenu1中
		jMenu1.add(jMenuItem1);
		//將jMenuTItem2新增到Jmenu1中
		jMenu1.add(jMenuItem2);
		//將jTextArea新增到JFrame中
		this.add(jTextArea);
		
		//設定窗體的標題
		this.setTitle("記事本(簡易版)");
		//設定窗體的大小
		this.setSize(800,600);
		//當關閉視窗的時候,關閉程序
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		//顯示視窗
		this.setVisible(true);
	}
	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		if(e.getActionCommand().equals("開啟"))
		{
			//例項化一個JFileChoose
			jFileChooser = new JFileChooser();
			//設定檔案選擇視窗的名字
			jFileChooser.setDialogTitle("劉猛讓您選擇自己的檔案... ...");
			//設定檔案視窗的預設路徑
			jFileChooser.showOpenDialog(null);
			//顯示檔案視窗
			jFileChooser.setVisible(true);
			//用address儲存使用者編輯檔案的絕對路徑
			
				String address = jFileChooser.getSelectedFile().getAbsolutePath();
			
			try {
				//為fileReader分配空間
				fileReader = new FileReader(address);
				//為bufferedReader分配空間
				bufferedReader = new BufferedReader(fileReader);
				//定義一個str判斷輸入的字元是否已經為空
				String str = "";
				//定義一個strAll接收檔案的全部資訊
				String strAll = "";
				//讀取檔案資訊,並將其儲存到strAll中
				while((str = bufferedReader.readLine()) != null)
				{
					strAll += str + "\r\n";
				}
				//將strAll中的全部資訊顯示到JTextArea上
				jTextArea.setText(strAll);
			} catch (Exception e2) {
				// TODO: handle exception
				e2.printStackTrace();
			}finally{
				try {
					//關閉檔案
					bufferedReader.close();
					fileReader.close();
				} catch (Exception e3) {
					// TODO: handle exception
					e3.printStackTrace();
				}
				
			}
			
			
			
		}
		//如果使用者點的是儲存按鈕
		if(e.getActionCommand().equals("儲存"))
		{
			//建立一個儲存視窗
			JFileChooser jFileChooser1 = new JFileChooser();
			//設定視窗名字
			jFileChooser1.setDialogTitle("另存為... ...");
			//設定預設設定
			jFileChooser1.showSaveDialog(null);
			//顯示視窗
			jFileChooser1.setVisible(true);
			try {
				//為fileWrite分配空間
				fileWriter = new FileWriter(jFileChooser1.getSelectedFile().getAbsolutePath());
				//為bufferedWrite分配空間
				bufferedWriter = new BufferedWriter(fileWriter);
				//儲存進去
				bufferedWriter.write(this.jTextArea.getText());
				
			} catch (Exception e2) {
				// TODO: handle exception
				e2.printStackTrace();
			}finally{
				//關閉檔案
				try {
					bufferedWriter.close();
					fileWriter.close();
				} catch (Exception e3) {
					// TODO: handle exception
					e3.printStackTrace();
				}
			}
			
		}
	}

}