二十二、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();
    }
}

运行效果:

 

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