标签:oid dap graphic 抽象 系统 vax lis 一句话 用户
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
标签:oid dap graphic 抽象 系统 vax lis 一句话 用户
原文地址:https://www.cnblogs.com/CYjiang/p/11829702.html