zoukankan      html  css  js  c++  java
  • 【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();
        }
    
    }
  • 相关阅读:
    CSS3—— 2D转换 3D转换 过渡 动画
    CSS3——边框 圆角 背景 渐变 文本效果
    CSS3——表单 计数器 网页布局 应用实例
    CSS3——提示工具 图片廓 图像透明 图像拼接技术 媒体类型 属性选择器
    CSS3——对齐 组合选择符 伪类 伪元素 导航栏 下拉菜单
    CSS3——分组和嵌套 尺寸 display显示 position定位 overflow float浮动
    CSS3——盒子模型 border(边框) 轮廓(outline)属性 margin外边距 padding填充
    Eclipse连接数据库报错Local variable passwd defined in an enclosing scope must be final or effectively final
    数据库——单表查询
    数据库——添加,修改,删除
  • 原文地址:https://www.cnblogs.com/frankruby/p/13552845.html
Copyright © 2011-2022 走看看