1. 程式人生 > >Java的GUI學習十二(檔案的開啟和儲存)

Java的GUI學習十二(檔案的開啟和儲存)

學習來自星雲:https://www.cnblogs.com/xingyunblog/p/3871611.html 

程式碼:

import java.awt.FileDialog;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

class GUI9
{
	 private Frame f;// 定義窗體
	 private MenuBar bar;// 定義選單欄
	 private TextArea ta;
	 private Menu fileMenu;// 定義"檔案"和"子選單"選單
	 private MenuItem openItem, saveItem, closeItem;// 定義條目"退出"和"子條目"選單項
	 private FileDialog openDia, saveDia;// 定義"開啟 儲存"對話方塊
	 private File file;//定義檔案
     GUI9(){init();}
     //圖形使用者介面組建初始化
     public void init()
     {
    	 f = new Frame("Galesaur");//建立窗體物件
 		 f.setBounds(300,100,600,500);//設定窗體位置和大小

 		 f.setVisible(true); //設定窗體可見
 		 bar = new MenuBar();// 建立選單欄
         ta = new TextArea();// 建立文字域
         
 		 fileMenu = new Menu("檔案");// 建立"檔案"選單

         openItem = new MenuItem("開啟");//建立"開啟"選單項
         saveItem = new MenuItem("儲存");//建立"儲存"選單項
         closeItem = new MenuItem("退出");//建立“退出"選單項

         fileMenu.add(openItem);//將 開啟 選單項新增到 檔案 選單上
         fileMenu.add(saveItem);//將 儲存 選單項新增到 檔案 選單上
         fileMenu.add(closeItem);//將 退出 選單項新增到 檔案 選單上

         bar.add(fileMenu);//將檔案新增到選單欄上
         f.setMenuBar(bar);//將此窗體的選單欄設定為指定的選單欄.
         openDia = new FileDialog(f, "開啟", FileDialog.LOAD);
         saveDia = new FileDialog(f, "儲存", FileDialog.SAVE);
         f.add(ta);// 將文字域新增到窗體內
         myEvent();//載入事件處理  	 
     }
     private void myEvent()
     {
    	 //開啟選單項監聽
    	 openItem.addActionListener(new ActionListener() {
    		public void actionPerformed(ActionEvent e)
    		{
    			openDia.setVisible(true); //顯得開啟檔案對話方塊
    			String dirpath = openDia.getDirectory();//獲取開啟檔案路徑並且儲存
    			String fileName = openDia.getFile();//獲取檔名並且儲存
    			
    			if(dirpath == null ||  fileName == null) //判斷路徑和檔案是否為空
    				return ;
    			else 
    				ta.setText(null); //檔案不為空 清楚原來檔案內容
    			file = new File(dirpath, fileName); //建立新的路徑和名稱
    			try {
    				BufferedReader bufr = new BufferedReader(new FileReader(file));//嘗試從檔案中讀東西
    				String line = null; //變數字串初始化為空
    				while((line = bufr.readLine())!= null)
    					ta.append(line+"\r\n"); //顯示每一行內容
    				bufr.close();//關閉檔案
    				
    			}catch(FileNotFoundException e1) {
    				e1.printStackTrace(); // 丟擲檔案路徑找不到異常
    			}catch(IOException e2){
    				e2.printStackTrace();// 丟擲IO異常
    			}
    		}
    	 });
    	 
		saveItem.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (file == null) {
					saveDia.setVisible(true);//顯示儲存檔案對話方塊
		    String dirpath = saveDia.getDirectory();//獲取儲存檔案路徑並儲存到字串中。
		    String fileName = saveDia.getFile();////獲取打儲存檔名稱並儲存到字串中
		  
		    if (dirpath == null || fileName == null)//判斷路徑和檔案是否為空
		    	return;//空操作
		    else
		    	file=new File(dirpath,fileName);//檔案不為空,新建一個路徑和名稱
			}
		    try {
		    	BufferedWriter bufw = new BufferedWriter(new FileWriter(file));
		        String text = ta.getText();//獲取文字內容
		        bufw.write(text);//將獲取文字內容寫入到字元輸出流
		        bufw.close();//關閉檔案
		    }catch (IOException e1) {
		    	e1.printStackTrace();//丟擲IO異常
		    }
		}
		});
	    	 
    	 
    	 //窗體關閉監聽
    	 f.addWindowListener(new WindowAdapter() {
    		 public void windowClosing(WindowEvent e) {
    			 System.exit(0);
    		 }
    	 });

    	 //退出選單項監聽
    	 closeItem.addActionListener(new ActionListener() {
    		 public void actionPerformed(ActionEvent e)
    		 {
    			 System.exit(0);
    		 }
    	 });
     }
     
     public static void main(String[] args){
              new GUI9();
     }
}