JAVA之旅(三十一)——JAVA的图形化界面,GUI布局,Frame,GUI事件监听机制,Action事件,鼠标事件


有段时间没有更新JAVA了,我们今天来说一下JAVA中的图形化界面,也就是GUI

一.GUI的概述

GUI全称叫做Graphical User Intergace(图形用户接口),用图形的方式,来显示计算机操作的界面,这样更加方便直观,与用户交互

说道交互,其实系统跟用户有两种交互,一种是GUI,一种叫做CLI,也就是命令行,全称叫做Command User Intergace,这个需要一些学习成本,倒是不怎么推荐,比如创建文件夹之类的,要是你用CLI那就有点麻烦了

回到JAVA,java中为GUI提供的对象都存在java.Awt和javax.Swing两个包中,这两个是什么意思呢?

  • java.Awt:abstract Window ToolKit(抽象窗口工具包),需要调用本地系统方法实现功能,属于重量级控件
  • javax.Swing:在Awt的基础上,建立的一套图形化界面系统。其中提供了更多的组件,而且完全由java实现,增强了移植性,属于轻量级控件

我们来看看大致的组件

二.GUI布局

我们来学习这些控件之前,我们要学习他的布局,这些组件应该按照什么样的样式排放,这就是布局,常见的布局管理器有以下这几种

  • FlowLayout(流式布局管理器)

    • 从左往右的顺序排列
    • Panel默认的布局管理器
  • BorderLayout(边界布局管理器)
    • 东南西北中
    • Frame默认的布局管理器
  • GridLayout(网格布局管理器)
    • 规则的矩阵
  • CardLayout(卡片布局管理器)
    • 选项卡
  • GridBagLayout(网格包布局管理器)
    • 非规矩的矩阵

三.Frame

我们来玩一下这个布局

package com.lgl.hello;

import java.awt.Frame;

public class Test {
    public static void main(String[] args) {

        Frame f = new Frame("GUI");
        //设置宽高
        f.setSize(300, 200);
        //设置显示位置
        f.setLocation(720, 560);
        //显示
        f.setVisible(true);
    }

}

运行的结果

紧接着,我们往里面放控件

package com.lgl.hello;

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;

public class Test {
    public static void main(String[] args) {

        //默认边界布局
        Frame f = new Frame("GUI");
        //设置布局管理器
        f.setLayout(new FlowLayout());
        //设置宽高
        f.setSize(300, 200);
        //设置显示位置
        f.setLocation(720, 560);

        //按钮
        Button b = new Button("Button");
        f.add(b);

        //显示
        f.setVisible(true);
    }

}

运行的结果

既然如此,我们就给他设置点击事件了

四.GUI事件监听机制

我们怎么去监听他的事件?我们先来看下流程图

  • 1.事件源
  • 2.事件
  • 3.监听器
  • 4.事件处理

我们就直接看代码了,我们先监听这个窗体右上角的关闭按钮

    // 窗体监听
        f.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                // 关闭窗口
                System.exit(0);
            }
        });

五.Action事件

我们继续来看,我们先按传统的四位给写好布局

package com.lgl.hello;

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Test {

    public static void main(String[] args) {

        new Test1();
    }
}

class Test1{

    // 定义组件
    private Frame f;
    private Button b;

    // 构造方法
    public Test1() {
        init();
    }

    // 初始化
    private void init() {
        //初始化坐标
        f = new Frame("My GUI");
        //设置坐标
        f.setBounds(300, 100, 600, 500);
        //设置布局
        f.setLayout(new FlowLayout());
        //初始化按钮
        b = new Button("Button");
        //添加到布局
        f.add(b);
        //显示之前加载一下
        myEvent();
        //显示
        f.setVisible(true);
    }

    //监听器
    private void myEvent() {
        f.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });

        //添加按钮事件

    }
}

仔细看代码,我们现在才是添加按钮事件

    // 添加按钮事件
        b.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("点击事件");
            }
        });

这样按钮也就具备了点击事件

六.鼠标事件

什么都有事件,那这样我们来监听一下鼠标的事件

    // 鼠标事件
        b.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseEntered(MouseEvent e) {
                System.out.println("鼠标进入了");
            }

            @Override
            public void mouseExited(MouseEvent e) {
                System.out.println("鼠标出去了");
            }
        });

十分的简单是吧,那相对的,还有一个键盘事件,提示框什么的,我们这个篇幅就到这里了,下篇文章我们再详细的介绍!

有兴趣的可以加群:555974449

JAVA之旅(三十一)——JAVA的图形化界面,GUI布局,Frame,GUI事件监听机制,Action事件,鼠标事件的更多相关文章

  1. GUI编程笔记(java)05:GUI事件监听机制原理和举例说明

    1.事件监听机制:       A:事件源          事件发生的地方       B:事件             就是要发生的事情       C:事件处理       就是针对发生的事情做 ...

  2. 三十一、Java图形化界面设计——布局管理器之GridLayout(网格布局)

    摘自http://blog.csdn.net/liujun13579/article/details/7772491 三十一.Java图形化界面设计--布局管理器之GridLayout(网格布局) 网 ...

  3. 三十二、Java图形化界面设计——布局管理器之CardLayout(卡片布局)

    摘自 http://blog.csdn.net/liujun13579/article/details/7773945 三十二.Java图形化界面设计--布局管理器之CardLayout(卡片布局) ...

  4. 三十三、Java图形化界面设计——布局管理器之null布局(空布局)

    摘自http://blog.csdn.net/liujun13579/article/details/7774267 三十三.Java图形化界面设计--布局管理器之null布局(空布局) 一般容器都有 ...

  5. java Gui编程 事件监听机制

    1.     GUI编程引言 以前的学习当中,我们都使用的是命令交互方式: 例如:在DOS命令行中通过javac java命令启动程序. 软件的交互的方式:   1. 命令交互方式    图书管理系统 ...

  6. JAVA事件监听机制学习

    //事件监听机制 import java.awt.*; import java.awt.event.*; public class TestEvent { public static void mai ...

  7. Java中的事件监听机制

    鼠标事件监听机制的三个方面: 1.事件源对象: 事件源对象就是能够产生动作的对象.在Java语言中所有的容器组件和元素组件都是事件监听中的事件源对象.Java中根据事件的动作来区分不同的事件源对象,动 ...

  8. Java基础--Java---IO流------GUI(布局)、Frame、事件监听机制、窗体事件、Action事件、鼠标事件、对话框Dialog、键盘事件、菜单

     * 创建图形化界面  * 1.创建frame窗体  * 2.对窗体进行基本设置  *   比如大小.位置.布局  * 3.定义组件  * 4.将组件通过窗体的add方法添加到窗体  * 5.让窗体显 ...

  9. JAVA 图形开发之计算器设计(事件监听机制)

    /*文章中用到的代码只是一部分,需要源码的可通过邮箱联系我 1978702969@qq.com*/ 前段时间刚帮同学用MFC写了个计算器,现在学到JAVA的图形开发,就试着水了一个计算器出来.(可以说 ...

随机推荐

  1. bzoj 3751: [NOIP2014]解方程

    Description 已知多项式方程: a0+a1x+a2x^2+...+an*x^n=0 求这个方程在[1,m]内的整数解(n和m均为正整数). 解题报告: 这题比较诡,看到高精度做不了,就要想到 ...

  2. BZOJ1187 [HNOI2007]神奇游乐园(插头dp)

    麻麻我会写插头dp了! 推荐陈丹琦论文:https://wenku.baidu.com/view/3e90d32b453610661ed9f4bd.html 破题调一年 #include <cs ...

  3. bootmgr is missing 开机无法进系统怎么办

    认识 bootmgr: 启动管理器.Bootmgr是Boot Manager的缩写,是在Windows Vista和Windows 7中使用的新的启动管理器,以代替Windows xp中的启动管理器- ...

  4. php序列化漏洞理解

    0x01什么是序列化 序列化就是将我们的 对象转变成一个字符串,保存对象的值方便之后的传递与使用. 0x02为什么要序列化 如果为一个脚本中想要调用之前一个脚本的变量,但是前一个脚本已经执行完毕,所有 ...

  5. ajax跨域请求问题及解决办法总结

    1.浏览器的同源策略及规避方法 目前,所有浏览器都实行同源政策.即协议.域名.端口都相同的URI称为"同源".不同源的url之间: a.无法读取cookie.localstorag ...

  6. discuz全新安装升级,导入旧数据过程,顺便gbk转utf8

    由于discuz官方已经不更新了,现在又只有现成的utf8版本,没有gbk版本.我们原来使用的是gbk编码的,最近想改版,顺便升级一下,就索性把gbk也换成utf8吧,这样以后也方便,国际化嘛! 第一 ...

  7. C++笔记002:VS2010报错:LINK fatal error LNK1123 转换到 COFF 期间失败文件无效或损坏

    原创笔记,转载请注明出处! 点击[关注],关注也是一种美德~ 错误描述: 1>------ 已启动生成: 项目: FirstCode, 配置: Debug Win32 ------ 1>生 ...

  8. PHP While 循环

    PHP 循环 - While 循环 循环执行代码块指定的次数,或者当指定的条件为真时循环执行代码块. PHP 循环 在您编写代码时,您经常需要让相同的代码块一次又一次地重复运行.我们可以在代码中使用循 ...

  9. ELK学习记录二 :elasticsearch、logstash及kibana的安装与配置

    注意事项: 1.ELK版本要求5.X以上,本人使用版本:elasticsearch-6.0.0.kibana-6.0.0-linux-x86_64.logstash-6.0.0.tar 2.Elast ...

  10. iOS开源照片浏览器框架SGPhotoBrowser的设计与实现

    简介 近日在制作一个开源加密相册时附带着设计了一个照片浏览器,在进一步优化后发布到了GitHub供大家使用,该框架虽然没有MWPhotoBrowser那么强大,但是使用起来更为方便,操作更符合常规相册 ...