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

    运行效果:

  • 相关阅读:
    如何用Python实现网络请求库中的UR解析器,面试必学
    为什么有人说 Python 多线程是鸡肋?
    router-view 与 动态组件 区别
    keep-alive
    vue 客户端渲染和服务端渲染
    js 数组对象深拷贝
    vue template标签
    Jquery中的日历插件
    HTML5中的canvas基本概念及绘图
    HTML5中的音视频处理
  • 原文地址:https://www.cnblogs.com/yueyazhishang/p/4056325.html
Copyright © 2020-2023  润新知