JAVA GUI 事件监听事件 详解 和 案例.

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(){ // *** 使用 匿名内部类 直接 实现 接口中的 方法。

  1 import java.awt.Button;
  2 import java.awt.FlowLayout;
  3 import java.awt.Frame;
  4 import java.awt.TextField;
  5 import java.awt.event.KeyAdapter;
  6 import java.awt.event.KeyEvent;
  7 import java.awt.event.MouseAdapter;
  8 import java.awt.event.MouseEvent;
  9 import java.awt.event.WindowAdapter;
 10 import java.awt.event.WindowEvent;
 11
 12 public class KeyLinstener {
 13
 14         public static void main(String[] args) {
 15
 16             Frame f = new Frame("My Frame");
 17
 18             f.setSize(450,450);
 19
 20             f.setLayout(new FlowLayout());
 21
 22             f.setLocation(500, 200);
 23
 24             f.setVisible(true);
 25
 26
 27         // *** 给窗口 添加 组件.
 28
 29             Button but = new Button("My Button");
 30
 31
 32         // *** 加入一个 文本框 组件.
 33
 34             TextField tf = new TextField(40); // *** 数值, 有多长.
 35
 36
 37             f.add(tf);
 38
 39             f.add(but);
 40
 41
 42             /*
 43              *
 44              *     需求: 对鼠标  双击 进行 处理.
 45              *
 46              *
 47              *
 48              * */
 49
 50             but.addMouseListener(new MouseAdapter() {
 51
 52                 @Override
 53                 public void mouseClicked(MouseEvent e) {
 54
 55
 56                     if(e.getClickCount() == 2) {
 57
 58                         System.out.println("Mouse Double Click");
 59
 60
 61                     }
 62
 63                 }
 64
 65             });
 66
 67             /*
 68              *
 69              *  需求:  文本框中 只能 输入 数字.
 70              *
 71              *
 72              *      事件源: 文本框.
 73              *
 74              *      文本框上 注册键盘 监听.
 75              *
 76              *      事件处理.
 77              *
 78              *
 79              *      static getKeyText();   根据 键盘的 码, 返回 对应的 文本.
 80              *
 81              * */
 82
 83
 84             tf.addKeyListener(new KeyAdapter() {
 85
 86                 @Override
 87                 public void keyPressed(KeyEvent e) {
 88
 89
 90                     // *** 1. 如何 获取 录入的 内容, 通过 键盘事件 对象 获取.
 91
 92 //         *** ctrl  shift alt 之类 的 都是  ? 号.  因为 这里 的 方法 只能 返回一个 字符.
 93
 94         /*            char key = e.getKeyChar();
 95
 96                     int code = e.getKeyCode();  // *** 关联的 键盘码.
 97
 98
 99             //        System.out.println(key + "......." + code);
100
101                     System.out.println(code + "......" + KeyEvent.getKeyText(code));*/
102
103
104             /*
105                 int code = e.getKeyCode();
106
107                 if (!(code >= KeyEvent.VK_0 && code <= KeyEvent.VK_9)){
108
109                     System.out.println("必须是 0 ~ 9 数字");
110
111                     e.consume(); // *** 直接 取消 默认 处理方式.
112
113                 } */
114
115                     /*  **  按 回车键 进入.
116                     if(e.getKeyCode() == KeyEvent.VK_ENTER ) {
117
118                         System.out.println("Enter run");
119
120                     }
121                     */
122
123                 /* **  调用 父类 方法. e.isControlDown()  按住 ctrl + enter  进入.*/
124
125                     if(e.isControlDown() && e.getKeyCode() == KeyEvent.VK_ENTER) {
126
127
128                         System.out.println("ctrl + Enter run");
129
130
131
132                     }
133
134
135                 }
136
137             });
138
139
140             //  *** 使 窗口上的 X 点击 可以进行关闭.
141             f.addWindowListener(new WindowAdapter() {
142
143                 @Override
144                 public void windowClosing(WindowEvent e) {
145
146                     System.exit(0);
147
148                 }
149             });
150             )
151 }
152
153     

原文地址:https://www.cnblogs.com/CYjiang/p/11829702.html

时间: 2024-10-26 20:31:28

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

Oracle 监听配置详解(转载)

使用ORACLE的SQL*Net V.2连接客户机和服务器,需配置每个客户机和服务器.在服务器上需配置的文件有:listener.ora./etc/services,在客户机上需配置tnsnames.ora文件. 客户端不需要知道数据库名字和实例名字,只需要知道数据库对外提供的服务名(service_name)就可以申请连接到数据库.这个服务名字可以设置成和实例名字一样,也可以根据业务需求设计.在数据库启动过程,oracle会向监听程序注册相应的服务,任意的一个数据库都会有两条信息注册到监听器中

Oracle 静态监听注册详解

网上有很多关于oracle 监听静态注册的文章,但大多都是简单说说,并没有详细的例子,这里,将结合linux as4 下的oracle 10gR2.0.1 举一个具体的例子 1.在 $ORACLE_HOME/network/admin/listener.ora 文件中加入一个静态注册的节点 [[email protected] oracle]$ cd $ORACLE_HOME/network/admin [[email protected] admin]$ vi listener.ora # l

事件监听 事件委托 事件绑定

1.事件冒泡 在类似 body > div > a 这样的结构中,如果单击a元素,click事件会从a一直冒泡到div和body(即document对象).因此,发生在a上面的单击事件,div和body元素同样可以处理 2.事件委托 利用事件传播(这里是冒泡)这个机制,就可以实现事件委托.具体来说,事件委托就是事件目标自身不处理事件,而是把处理任务委托给其父元素或者祖先元素,甚至根元素(document) (1)jQuery的 bind() 方法,使用.bind()方法只会给第一页中的50个单

java 事件监听 - 控件

java 事件监听 //事件监听 //事件监听,写了一个小案例,点击按钮改变面板的颜色. import java.awt.*; import javax.swing.*; import java.awt.event.*; public class Index extends JFrame implements ActionListener{ //设置面板 Wdmb wdmb = new Wdmb(); //设置按钮 JButton anniu1 = new JButton("黄色");

Android-ListView两种适配器以及事件监听

Android-ListView两种适配器 ListView在安卓App中非常常见,几乎每一个App都会有涉及,比如QQ消息列表,或者是 通讯录还有就是酷我音乐的歌曲列表都是ListView.继承ListView.所以非常重要. 这就是ListView ArrayAdapter 数据源是数据或者集合,比较简单 布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:androi

Android 监听事件

安卓中监听事件的三种实现方式 1.匿名内部类的实现方式 2.独立类的实现方式 3.实现接口方式实现 一.匿名内部类的实现 1.首先声明一个Button //声明一个Button private Button Listener1; 2.设置Button的监听器,并且通过匿名内部类的方式实现 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //设置Bu

js--事件概念和事件监听

事件概念和事件监听 事件的概念 JavaScript使我们有能力创建动态页面,网页中的每个元素都可以产生某些可以触发JavaScript函数的事件.我们可以认为事件是可以被JavaScript侦测到的一种行为. 使用返回值改变HTML元素的默认行为 HTML元素大都包含了自己的默认行为,例如:超链接.提交按钮等.我们可以通过在绑定事件中加上return false来阻止它的默认行为 1.绑定HTML元素属性 <input type="button" value="cli

spring boot 学习 ---- 使用事件监听

spring 的事件监听 事件监听其实我们并不陌生,简单来讲,当程序达到了某个特定的条件,程序就会自动执行一段指令.在spring 中也一样,我们可以使用spring中的事件监听来实现某些特定的需求. 发布事件 既然要监听事件,首先要发布我们的事件嘛.在spring中发布事件我们可以通过继承ApplicationEvent 来发布我们的事件类. @Data public class SendEvent extends ApplicationEvent { public SendEvent(Obj

WebView使用详解(二)——WebViewClient与常用事件监听

登录|注册     关闭 启舰 当乌龟有了梦想-- 目录视图 摘要视图 订阅 异步赠书:Kotlin领衔10本好书      免费直播:AI时代,机器学习如何入门?      程序员8月书讯      每周荐书:Java Web.Python极客编程(评论送书) WebView使用详解(二)--WebViewClient与常用事件监听 2016-05-28 11:24 20083人阅读 评论(13) 收藏 举报  分类: 5.andriod开发(148)  版权声明:本文为博主原创文章,未经博主