GUI
来源:互联网 发布:android软件开发 编辑:程序博客网 时间:2024/04/20 13:37
- GUI概述
- GUI:Graphical User Interface(图形用户接口)。
- 用图形的方式,来显示计算机操作的界面,这样更方便更直观。
- CLI:Command line User Interface (命令行用户接口)。
- 就是常见的Dos命令行操作。
- 需要记忆一些常用的命令,操作不直观。
- 就是常见的Dos命令行操作。
- Java为GUI提供的对象都存在java.Awt和javax.Swing两个包中。
- java.Awt:Abstract Window ToolKit (抽象窗口工具包)
- 需要调用本地系统方法实现功能。属重量级控件。
- javax.Swing:
- 在AWT的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全 由Java实现。增强了移植性,属轻量级控件。、
- 在AWT的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全 由Java实现。增强了移植性,属轻量级控件。、
- 继承关系图:
- Container:为容器,是一个特殊的组件,该组件中可以通过add 方法添加其他组件进来。
- 布局管理器
- 布局
- 容器中的组件的排放方式,就是布局。
- 常见的布局管理器
- FlowLayout(流式布局管理器):
- 从左到右的顺序排列。
- Panel默认的布局管理器。
- 从左到右的顺序排列。
- BorderLayout(边界布局管理器):
- 东,南,西,北,中。
- 如果不指定方向,则居中填充,多个组件的话填充覆盖。
- Frame\Dialog默认的布局管理器。
- 东,南,西,北,中。
- GridLayout(网格布局管理器):
- 规则的矩阵。
- 规则的矩阵。
- CardLayout(卡片布局管理器):
- 选项卡。
- 选项卡。
- GridBagLayout(网格包布局管理器):
- 非规则的矩阵。
- 非规则的矩阵。
- 坐标式布局管理器:
- 组件可以放在任意位置。
- 组件可以放在任意位置。
- Frame
- 图形化界面是由主线程以外的另一个线程运行的。主线程要等所有其他前台线程都结束以后才能结束。
- 创建图形化界面:
- 创建Frame窗体。
- 对窗体进行基本设置(大小、位置、布局等)。
- 定义组件。
- 将组件通过窗体的add方法添加到窗体中。
- 让窗体显示,通过setVisible(true)。
- 创建Frame窗体。
- 代码举例:
package cn.itcast.heima;import java.awt.*;class AwtDemo {public static void main(String[] args) {Frame f = new Frame("my wat");f.setSize(200,150);f.setLocation(300,200);f.setLayout(new FlowLayout());//设置为流式布局Button b = new Button("按钮");f.add(b);f.setVisible(true);}}
程序执行效果:弹出窗体如图
- 事件监听机制
- 事件监听机制流程图
- 事件监听机制组成
- 事件源(组件)
- awt包或者swing包中的那些图形界面组件。
- awt包或者swing包中的那些图形界面组件。
- 事件(Event)
- 每一个事件源都有自己特有的对应事件和共性事件。
- 每一个事件源都有自己特有的对应事件和共性事件。
- 监听器(Listener)
- 封装了可以触发某一个事件的动作(不止一个)。
- 封装了可以触发某一个事件的动作(不止一个)。
- 事件处理(引发事件后处理方式)
- 事件监听机制的实现步骤:
- 确定事件源(容器或组件)。
- 通过事件源对象的addXXXListener()方法将侦听器注册到该事件源上。
- 该方法中接收XXXListener的子类对象,或者XXXListener的子类XXXAdapter的子类对象。一般用匿名内部类来表示。
- 在覆盖方法的时候,方法的参数一般是XXXEvent类型的变量接收。
- 事件触发后会把事件打包成对象传递给该变量。(其中包括 事件源对象。通过getSource()或者,getComponent()获取。)
- 窗体事件
- 代码举例:
//通过关闭按钮关闭窗体。package cn.itcast.heima;import java.awt.*;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;class AwtDemo {public static void main(String[] args) {Frame f = new Frame("my wat");f.setSize(200,150);f.setLocation(300,200);f.setLayout(new FlowLayout());Button b = new Button("按钮");f.add(b);//添加窗体事件监听f.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {System.exit(0);}});f.setVisible(true);}}
程序执行效果:点击关闭按钮,窗口关闭。 - Action事件
- 代码举例:
//为按钮添加活动监听package cn.itcast.heima;import java.awt.Button;import java.awt.FlowLayout;import java.awt.Frame;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;class AwtDemo {private Frame f;private Button b;public AwtDemo(){ini();}void ini(){f = new Frame("my wat");f.setSize(200,150);f.setLocation(300,200);f.setLayout(new FlowLayout());b = new Button("按钮");f.add(b);myEvent();f.setVisible(true);}private void myEvent(){//添加Action监听b.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.exit(0);}});}public static void main(String[] args) {new AwtDemo();}}
程序执行效果:点击按钮b,窗口关闭。 - 鼠标事件
- 代码举例:
//判断鼠标双击动作package cn.itcast.heima;import java.awt.Button;import java.awt.FlowLayout;import java.awt.Frame;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;class AwtDemo {private Frame f;private Button b;public AwtDemo(){ini();}void ini(){f = new Frame("my wat");f.setSize(200,150);f.setLocation(300,200);f.setLayout(new FlowLayout());b = new Button("按钮");f.add(b);myEvent();f.setVisible(true);}private void myEvent(){//鼠标事件监听b.addMouseListener(new MouseAdapter() {@Overridepublic void mouseClicked(MouseEvent e) {if (e.getClickCount() == 2) {System.exit(0);}}});}public static void main(String[] args) {new AwtDemo();}}
程序执行效果:双击按钮b,窗口关闭。 - 键盘事件
- 代码举例:
//判断键盘动作,如果在按钮b上按下Ctrl+Enter,关闭窗口//判断文本输入框中的键盘录入,如果不是数字,不能输入package cn.itcast.heima;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;class AwtDemo {private Frame f;private Button b;private TextField tf;public AwtDemo(){ini();}void ini(){f = new Frame("my wat");f.setSize(200,150);f.setLocation(300,200);f.setLayout(new FlowLayout());tf = new TextField(20);b = new Button("按钮");f.add(tf);f.add(b);myEvent();f.setVisible(true);}private void myEvent(){//按钮b的键盘事件监听b.addKeyListener(new KeyAdapter() {@Overridepublic void keyPressed(KeyEvent e) {int code = e.getKeyCode();if (code == KeyEvent.VK_ENTER && e.isControlDown()) {System.exit(0);}}});//文本输入框的键盘事件监听tf.addKeyListener(new KeyAdapter() {@Overridepublic void keyPressed(KeyEvent e) {int code = e.getKeyCode();if (code < KeyEvent.VK_0 || code > KeyEvent.VK_9) {e.consume();}}});}public static void main(String[] args) {new AwtDemo();}}
程序执行效果:文本框只能显示键盘录入的数字。按钮b获得焦点后,按下Ctrl+Enter,窗口关闭。
- 菜单
- 菜单继承体系
- 菜单操作
- MenuItem:菜单项,表示最后一级菜单,没有子菜单或子菜单项。
- Menu:菜单,可以对其继续添加子菜单或子菜单项。
- MenuBar类的add(Menu m)方法可以向菜单栏中添加菜单。
- Menu类的add(MenuItem mi)方法可以向菜单中添加菜单项。由于Menu是MenuItem的子类,因此该方法也可以向菜单中添加菜单。
- MenuItem类的addActionListener(ActionListener l)方法可以添加动作监听。
- GUI
- GUI
- GUI+
- GUI
- GUI
- GUI
- gui
- gui
- GUI
- GUI
- GUI
- GUI
- GUI
- GUI
- GUI
- GUI
- GUI
- GUI
- PHP学习 --smarty 过滤器 缓存等
- AddressBookUI.Framwork应用之ABPersonViewController, ABUnknownPersonViewController,ABNewPersonViewContro
- x264_scan8 的理解
- 关于spring与struts2使用Annotion注解方式的集成
- Tornado源码分析之http服务器篇
- GUI
- CF 154 Div2
- oracle 解除 sql语句、存储过程在执行中造成的锁
- [Borland.Delphi.V1.V2.V.3.古董.怀旧.供爱好者收藏用].Borland.Delphi5.rar
- 二叉查找树与红黑树原理和程序全面介绍
- 更换Ubuntu12.04LTS更新源提高软件下载速度
- 不允许lseek文件 | nonseekable_open()
- sys/time.h
- view和viewController的生命周期