GUI(图形用户界面)

Graphical User Interface(图形用户接口)

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

CLI

Command Line User Interface(命令行用户接口)

就是常见的 Dos 命令行操作.

需要记忆一些常用的命令, 操作不直观.

Java 为 GUI 提供的 对象 都存在 java.awt 和 javax.swing 两个包中.

Java 图形化界面的 产品: eclipse 这个产品使用 纯Java 语言 编写的. 所以 这个 软件不用安装, 但是至少得有 jre(Java 语言程序的 运行环境).

1. AWT 和 Swing

*** java.awt: Abstarct Window ToolKit(抽象窗口工具包), 需要调用本地系统方法 实现功能. 属于 重量级(和系统耦合(嵌入) 紧密) 控件.

*** javax.swing: 在 AWT 的基础上, 建立的一套图形界面 系统, 其中提供了 更多的组件, 而且 完全由 Java 实现. 增强了 移植性, 属 轻量级(和系统耦合(嵌入) 较浅) 控件.

SWT外观包 网上可以下载, 开源免费, 值得一试.

component : 组件 container: 容器 checkbox: 复选框.

TextField: 文本框: 单行文本框. TextArea: 文本区域: 多行文本框.

Panel: 面板, 一般 面板 不能独立存在, 都是 基于 Window(窗体) 的.

Frame: 小窗口.

Dialog: (弹出一个)对话框. FileDialog: 文件对话框.

*** Container: 为容器, 是一个特殊的组件, 该组件中 可以通过 add 方法 添加 其他 组件进来.

*** 一般先创建 一个 整体界面(new Frame) , 然后再 添加一些 子组件.

2. 事件 监听机制.

事件源(组件) (承载事件的源头)

事件(Event) (发生的事)

监听器(Listener) (监控 某些动作)

事件处理(引发事件后 处理方式)

* 需求: 想要 点击按钮 有效果, 比如 打印一句话.
*
* 思路:
*
* 1. 确定 事件源. 按钮.
*
* 2. 确定 监听器. 按钮添加监听器, 按钮对象 最清楚, 到 按钮对象中 查找.
*
* 3. 定义 处理方式.
*
* 定义的 规范: XXXLinstener: XXX监听器. --- 对应的 XXXEvent 事件.

// *** 补充: public abstarct class WindoAdapter{ } 就是 一个 典型的 没有抽象方法的 抽象类.

public abstract class WindoAdapter{ }

接收 窗口事件的 抽象适配器类。 此类中的方法为空。 此类 存在的目的 是 方便 创建 监听器对象。

这是一个 抽象类, 但是 其中的 方法都没被 抽象。(没有抽象方法的 抽象类。)

*** Alt + Shift + s 调用 源码 命令。

需求: 想要实现 点击 窗体的 X 就可以实现 窗体的 关闭。
*
* 1. 事件源: 窗体。
*
* 2. 确定 监听器。 通过 窗口对象 去查。
*
* 3. 事件处理。
*   
* 到底 哪些 监听接口 , 有 适配类?
*
* 只要 监听 接口中的 方法 不大于 2 个(在 两个以内) 都没有 适配器类。 适配器的 出现 只为 方便 创建 监听器 对象。
*
*
* 但是 一般 监听接口 都有 适配器。

// *** Frame 本身是一个容器, 但是它 里面 其实是封装了 一个 集合; 这些组件 都是一个个 对象, 然后 就添加到了 集合中去。

f.addWindowListener(new WindowAdapter(){// *** 这里 是个 大括号, 说明 里面是个 匿名的 内部类。 实现方法。

System.exit(0); // *** 退出 java 虚拟机。

需求: 想要用户点击 有效果, 比如 打印一句话。
*
* 思路:
* 1. 确定事件源 (按钮)
*
* 2. 确定 监听器。 (按钮添加监听器, 按钮对象最清楚, 到按钮对象中查找。)
*
* 3. 定义处理方式。
*
* 定义的 规范:XXXListener 监听器 XXX监听器 --对应的 XXXEvent 事件。
*
* */

/*
// *** 1. 在 按钮上 添加所需的 监听器
but.addActionListener(new ActionListener(){ // *** 使用 匿名内部类 直接 实现 接口中的 方法。

 import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextField;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent; public class KeyLinstener { public static void main(String[] args) { Frame f = new Frame("My Frame"); f.setSize(450,450); f.setLayout(new FlowLayout()); f.setLocation(500, 200); f.setVisible(true); // *** 给窗口 添加 组件. Button but = new Button("My Button"); // *** 加入一个 文本框 组件. TextField tf = new TextField(40); // *** 数值, 有多长. f.add(tf); f.add(but); /*
*
* 需求: 对鼠标 双击 进行 处理.
*
*
*
* */ but.addMouseListener(new MouseAdapter() { @Override
public void mouseClicked(MouseEvent e) { if(e.getClickCount() == 2) { System.out.println("Mouse Double Click"); } } }); /*
*
* 需求: 文本框中 只能 输入 数字.
*
*
* 事件源: 文本框.
*
* 文本框上 注册键盘 监听.
*
* 事件处理.
*
*
* static getKeyText(); 根据 键盘的 码, 返回 对应的 文本.
*
* */ tf.addKeyListener(new KeyAdapter() { @Override
public void keyPressed(KeyEvent e) { // *** 1. 如何 获取 录入的 内容, 通过 键盘事件 对象 获取. // *** ctrl shift alt 之类 的 都是 ? 号. 因为 这里 的 方法 只能 返回一个 字符. /* char key = e.getKeyChar(); int code = e.getKeyCode(); // *** 关联的 键盘码. // System.out.println(key + "......." + code); System.out.println(code + "......" + KeyEvent.getKeyText(code));*/ /*
int code = e.getKeyCode(); if (!(code >= KeyEvent.VK_0 && code <= KeyEvent.VK_9)){ System.out.println("必须是 0 ~ 9 数字"); e.consume(); // *** 直接 取消 默认 处理方式. } */ /* ** 按 回车键 进入.
if(e.getKeyCode() == KeyEvent.VK_ENTER ) { System.out.println("Enter run"); }
*/ /* ** 调用 父类 方法. e.isControlDown() 按住 ctrl + enter 进入.*/ if(e.isControlDown() && e.getKeyCode() == KeyEvent.VK_ENTER) { System.out.println("ctrl + Enter run"); } } }); // *** 使 窗口上的 X 点击 可以进行关闭.
f.addWindowListener(new WindowAdapter() { @Override
public void windowClosing(WindowEvent e) { System.exit(0); }
});
)
}

JAVA GUI 事件监听事件 详解 和 案例.的更多相关文章

  1. [置顶] java Gui 键盘监听事件

    简单写一个java Gui键盘监听事件,实现的效果就是按下键盘控制台输出你按下的键.比如:按下A控制台就输出A 效果如图: 以下把实现的效果分为几个步骤: 1.新建一个窗体类继承窗体: 2.给这个窗体 ...

  2. Android开发之手势滑动(滑动手势监听)详解

    Android开发之手势滑动(滑动手势监听)详解 在Android应用中,经常需要手势滑动操作,比如上下滑动,或左右方向滑动,处理手势滑动通常有两种方法:一种是单独实现setOnTouchListen ...

  3. JAVA JComboBox的监听事件(ActionListener、ItemListener)

    版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+]   参考资料: http://263229365.iteye.com/blog/1040329 https://www.ja ...

  4. java中的监听事件

    java监听器实现的类 1.ServletContextListener:对servlet上下文的创建和销毁监听 2.ServletContextAttributeListener:监听servlet ...

  5. GUI常用监听事件

    概念 对鼠标.键盘等一系列事件做出相应的反馈 事件监听 //创建监听事件 public class Demo { public static void main(String[] args) { Fr ...

  6. DOM 事件监听 事件冒泡 事件捕获

    addEventListener() 方法 实例: // 当用户点击按钮时触发监听事件: document.getElementById("myBtn").addEventList ...

  7. tnsnames.ora 监听配置文件详解

    今天是重要的一天.将XML数据导入ORACLE遇到很多问题,学了好多,其中很长时间花在网络配置上,刚开始学,具体原因不知道,先把搜集到的好文章存下来,以后慢慢研究. 监听配置文件            ...

  8. Oracle 监听配置详解(转载)

        使用ORACLE的SQL*Net V.2连接客户机和服务器,需配置每个客户机和服务器.在服务器上需配置的文件有:listener.ora./etc/services,在客户机上需配置tnsna ...

  9. [转载]tnsnames.ora监听配置文件详解

    监听配置文件             为了使得外部进程 如 CAMS后台程序 能够访问 Oracle 数据库 必须配             置 Oracle 网络服务器环境 配置 Oracle 网络 ...

随机推荐

  1. 使用Docker Toolbox基于boot2docker搭建的Docker如何修改镜像源

    镜像源 由于众所周知的原因,我们直接连接这些位于国外服务器上的仓库去获取依赖包速度是非常慢的,这时候我们通常会采用国内一些组织或开发者贡献的国内镜像仓库. 1.首先Docker也提供了国内的镜像源:h ...

  2. 利用shell脚本个性化运行jar任务

    利用shell脚本可以个性化运行jar任务,废话不多说,直接上代码: #!/bin/bash APP_PATH=/root/bigdata/jars/data_migration_from_sqlse ...

  3. UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 357: illegal multibyte sequence 错误解决方法(已解决)

    今天在搭建数据驱动测试框架的时候遇到这个错误: 好在我英语水平还不错(也就六级水平吧),根据英文提示说是多字节数据顺序是非法的 顺着错误往上找发现 File "C:\Users\Mr雷的电脑 ...

  4. spring配置文件默认名称及位置,ContextLoaderListener监听器作用

    spring在web.xml中的配置 由于spring需要启动容器才能为其他框架提供服务,而web应用程序的入口是由web服务器控制的,因此无法在main()方法中通过创建ClassPathXmlAp ...

  5. request.getAttribute()和request.getParameter()

    request.getParameter()取得是通过容器的实现来取得通过类似post,get等方式传入的数据,request.setAttribute()和getAttribute()只是在web容 ...

  6. p0wnedshell的介绍与使用

    0x01 前言 p0wnedShell是一个用c#编写的攻击性PowerShell主机应用程序,它不依赖于PowerShell .exe,而是在PowerShell runspace环境(. net) ...

  7. msf后门之persistence

    在获取得了meterpreter shell后 使用Persistence建立持续性后门 run persistence -h meterpreter > run persistence -h ...

  8. vue-cli 3.x 自定义插件并发布到 npm

    干货转载——https://www.cnblogs.com/wisewrong/archive/2018/12/28/10186611.html 全是知识点呐 赶紧记下来啊 一.调整项目结构 首先用 ...

  9. php的cookie怎么使用

    PHP中Cookie的使用---添加/更新/删除/获取Cookie 及 自动填写该用户的用户名和密码和判断是否第一次登陆 什么是cookie? 服务器在客户端保存用户的信息,比如登录名,密码等. 这些 ...

  10. 百万年薪python之路 -- 模拟三次账号登录锁定功能

    用代码实现三次用户登录及锁定(选做,时间充足建议做一做) 项目分析: 一.首先程序启动,显示下面内容供用户选择: 1.注册 2.登录 a.用户选择登录的时候,首先判断用户名在userinfo.txt表 ...