二十二、Java基礎--------GUI入門

    在java學習過程中GUI是一個比較特殊的知識體系(筆者對安卓不是很瞭解),似乎在爲安卓的學習做着準備,本文將將展示一個綜合案例。

    創建一個類似於記事本的程序,包含打開與保存功能。

package GUI;

import java.awt.FileDialog;
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.FileReader;
import java.io.FileWriter;

public class MyMenu2 {
    private Frame f;//聲明窗體
    private MenuBar bar;//聲明一個bar,表示工具條,比如:文件、Edit、Source等等
    private TextArea ta;//文本區域,用於顯示打開文件的內容
    private Menu filebMenu;//我的理解是爲上面的bar命名,當然還包含一個添加選項的功能。。。。。。不是很清楚
    private FileDialog openDia,SaveDia;//打開新的對話框、與保存時出現的對話框
    private MenuItem closeItem,saveItem,openItem;//三個選項,用以觸發關閉,保存,打開事件
    private File file;
    MyMenu2()
    {
        init();
    }
    void init(){
        f=new Frame("my farme");//窗體的名稱
        f.setBounds(300,100,650,600);//setBounds(int x, int y, int width, int height)
//        f.setLayout(new FlowLayout());
        bar=new MenuBar();
        filebMenu=new Menu("文件");
        
        openItem=new MenuItem("打開");
        saveItem=new MenuItem("保存");
        closeItem=new MenuItem("退出");
        ta=new TextArea();
        
        filebMenu.add(openItem);//將打開、保存、關閉對話框附加到工具條上
        filebMenu.add(saveItem);
        filebMenu.add(closeItem);
        bar.add(filebMenu);//將工具條附加到bar上。
        f.setMenuBar(bar);//將bar添加到窗體上
        f.setVisible(true);//設置窗體可見
        openDia=new FileDialog(f,"我要打開",FileDialog.LOAD);//定義一個打開的窗體對象
        SaveDia=new FileDialog(f,"我要保存",FileDialog.SAVE);//定義一個打開保存文件的對象
        f.add(ta);//將文本附加到窗體
        myEvent();
    }
    //定義一些列事件,用於處理不同的請求
    public void myEvent(){
        /*
         * 處理打開觸發器
         *         1、打開窗體可見
         *         2、獲取文件的路徑以及文件名
         *         3、讀取文件
         *         4、將文件內容顯示到文本區域
         * */
        openItem.addActionListener(new ActionListener() {
            
            @Override
            public void actionPerformed(ActionEvent e) {
                //使打開對話框可見
                openDia.setVisible(true);
                String dirPath=openDia.getDirectory();
                String fileName=openDia.getFile();
                System.out.println(dirPath+":"+fileName);
                if(dirPath==null||fileName==null)
                    return;
                File file=new File(dirPath,fileName);
                try{
                    ta.setText("");
                    BufferedReader br=new BufferedReader(new FileReader(file));
                    String temp="";
                    while((temp=br.readLine())!=null){
                        ta.append(temp+"\r\n");
                    }
                    br.close();
                
                }catch (Exception ex) {
                    ex.printStackTrace();
                }
                
            }
        });
        /*
         * 處理保存觸發器的內容
         * */
        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;
                    file=new File(dirPath,fileName);
                    
                }
                try{
                    BufferedWriter bw=new BufferedWriter(new FileWriter(file));
                    String text=ta.getText();
                    bw.write(text);
                    bw.close();
                }
                catch (Exception ex) {
                    throw new RuntimeException();
                }
                
            }
        });
        /*
         * 處理關閉觸發器
         * */
        closeItem.addActionListener(new ActionListener() {
            
            @Override
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
                
            }
        });
        
        /*
         * 處理點擊窗體上的 ‘X' 時的事件
         * */
        f.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
            
        });
    }
    public static void main(String[] args) {
        MyMenu2 menu=new MyMenu2();
    }
}

運行效果:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章