• 【Java之GUI 01】


    • GUI:图形用户界面

    用图形的方式,来显示计算机操作的界面,这样更方便更直观

    • CLI:命令行用户接口

    就是常用的Dos命令行接口

    • Java为GUI提供的对象都存在java.Awt和java.Swing两个包中。

    二、Awt和Swing

    java.awt:AbstractWindow ToolKit(抽象窗口工具包),需要调用本地系统方法实现功能。属重量级控件。

    java.swing:在awt的基础上,简历的一套图形界面系统,其中提供了更多的组件,而且完全由Java实现。增强了移植性,属轻量级控件。

    三、继承关系图

     四、布局管理器

     五、Frame演示

    1、component 是一个具有图形表示能力的对象,可在屏幕上显示,并可与用户进行交互。典型图形用户界面中的按钮、复选框和滚动条都是组件示例。

    2、Frame 是带有标题和边框的顶层窗口

     六、事件监听机制

    事件监听机制的组成。
    |-- 事件源(组件)
    |-- 事件(Event)
    |-- 监听器(Listener)
    |-- 处理方式(引发事件后的处理方式)

    不是所有事件源都能承载事件

    事件和监听器都是有对应关系的。

    2、举例描述事件监听的原理

     3、事件监听机制流程图

     3、添加窗体监听

     /*
            * 在API接口文档内Frame类没有addWindowListener方法,则找Frame的父类Window,
            * 在其父类内发现有addWindowListener(WindowListener l) 方法,进一步深入WindowListener,发现WindowListener
            * 是一个接口,此接口有7个方法,而我们只想实现其中的一个方法windowClosing(实现接口内方法,可以通过抽象类,但是抽象类实现的话
            * 必须把接口内所有的方法都实现),所以找WindowListener接口的子类WindowAdapter,这个类实现了接口的所有方法,而我们只需要
            * 调用其中的windowClosing即可
            *
            * -->WindowAdapter:接收窗口事件的抽象适配器类。此类中的方法为空。此类存在的目的是方便创建侦听器对象。
            * */
    
            /*添加窗体监听 -->用于关闭窗口 */
            f.addWindowListener(new WindowAdapter() {
                @Override
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            });

    4、添加按钮监听

    /*6、添加按钮监听  -->需求:一点击按钮,窗口关闭*/
            b.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    System.out.println("button run....");
                    System.exit(0);
                }
            });

    ----------------->frame到监听的完整代码<-------------------

    package com.JavaGui.AwtDemo;
    
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    
    /**
     * @Author wufq
     * @Date 2020/8/31 11:20
     */
    public class frameDemo {
        public static void main(String[] args){
            /*1、创建窗体并做基本设置*/
            Frame f = new Frame("My Frame");//设置窗口标题
            //设置窗口像素(即:大小)(宽,高)
            f.setSize(500,400);
            //设置窗口显示的位置,(最左边,最上边)
            f.setLocation(400,150);
    
    //        f.setBounds(500,400,400,150);  -->直接可以设置像素和位置
    
            f.setLayout(new FlowLayout()); //设置流式布局 -->按钮总会在窗口的左上角显示,所以需要进行布局。设置以后就会显示正常的位置
    
            /*2、建立组件*/
            Button b = new Button("一个按钮");
            /*3、将组件添加到窗体上*/
            f.add(b);
    
    
             /*
            * 在API接口文档内Frame类没有addWindowListener方法,则找Frame的父类Window,
            * 在其父类内发现有addWindowListener(WindowListener l) 方法,进一步深入WindowListener,发现WindowListener
            * 是一个接口,此接口有7个方法,而我们只想实现其中的一个方法windowClosing(实现接口内方法,可以通过抽象类,但是抽象类实现的话
            * 必须把接口内所有的方法都实现),所以找WindowListener接口的子类WindowAdapter,这个类实现了接口的所有方法,而我们只需要
            * 调用其中的windowClosing即可
            *
            * -->WindowAdapter:接收窗口事件的抽象适配器类。此类中的方法为空。此类存在的目的是方便创建侦听器对象。
            * */
    
            /*5、添加窗体监听 -->用于关闭窗口 */
            f.addWindowListener(new WindowAdapter() {
                @Override
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            });
    
            /*6、添加按钮监听  -->需求:一点击按钮,窗口关闭*/
            b.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    System.out.println("button run....");
                    System.exit(0);
                }
            });
    
            /*4、让窗体显示*/
            f.setVisible(true);
            System.out.println("over");
        }
    }

    5、鼠标和键盘监听

    package com.JavaGui.AwtDemo;
    
    import java.awt.*;
    import java.awt.event.*;
    
    /**
     * @Author wufq
     * @Date 2020/9/1 11:17
     */
    public class MouseAndKeyDemo {
    
        private Frame f;
        private TextField tf;
        private Button but;
    
        //构造方法初始化
        public MouseAndKeyDemo(){
            ini();
        }
    
        private void ini() {
    
            f = new Frame("演示鼠标和键盘监听"); //设置窗口
            f.setBounds(400,500,400,300); //设置设置窗口像素和显示位置
            f.setLayout(new FlowLayout());//设置流式布局
    
            tf = new TextField(15); //设置文本框大小
            but = new Button("确认");
            f.add(tf); //窗体添加文本
            f.add(but);
    
            MyEvent(); //窗体事件
    
            f.setVisible(true); //窗体显示
    
    
        }
    
        private void MyEvent() {
    
            //让窗体具有关闭性
            f.addWindowListener(new WindowAdapter() {
                @Override
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            });
    
            //在按钮上添加一个鼠标监听
            but.addMouseListener(new MouseAdapter() {
                private int count = 1;
                @Override
                public void mouseClicked(MouseEvent e) { //鼠标单击事件
    
                    if(e.getClickCount()==2){  //e.getClickCount()==2   鼠标双击事件
                        tf.setText("Mouse..."+count++);
                    }
                }
            });
    
            //给文本框添加键盘监听
            tf.addKeyListener(new KeyAdapter() {
                @Override
                public void keyPressed(KeyEvent e) {
                    //打印输出按键信息
    //                System.out.println(KeyEvent.getKeyText(e.getKeyCode())+":::"+e.getKeyCode());//4:::52  D:::68
    
                    //输入0~9的数字
                    int code= e.getKeyCode();
                    if(!(code>=KeyEvent.VK_0 && code<= KeyEvent.VK_9)){
                        System.out.println("必须是数字!");
                        e.consume();
                    }
    
                    //crtl+enter
                    if(e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER){
                        System.out.println("run....");
                    }
                }
            });
    
        }
    
        public static void main(String[] args){
            new MouseAndKeyDemo();
        }
    
    }
  • 相关阅读:
    #小练习 动态生成密码 分类: python 小练习 2013-08-15 16:25 314人阅读 评论(0) 收藏
    mysql中文乱码问题 分类: database 2013-08-15 14:03 330人阅读 评论(0) 收藏
    使用os.walk()方法 分类: python 小练习 2013-08-14 10:52 1465人阅读 评论(0) 收藏
    oracle 数据库转换成mysql工具:ora2mysqcn 分类: database 2013-08-14 10:21 541人阅读 评论(0) 收藏
    使用fileinput模块进行原地修改文件 分类: python 小练习 2013-08-13 16:47 618人阅读 评论(0) 收藏
    docker知识整理(备份)
    [DP] [模板] 01背包
    [模板][线段树]
    [Tree] [洛谷] P1030 求先序排列
    [Tree] [洛谷] P1087 FBI树
  • 原文地址:https://www.cnblogs.com/frankruby/p/13552845.html
Copyright © 2020-2023  润新知