28、java.awt-GUI图形用户界面
一、GUI(Graphical User Interface )
- 图形用户接口
- 用图形的方式,来显示计算机操作的界面,这样更方便更直观
- CLI(Command line Interface)
- 命令行用户接口
- 就是常见的dos命令行操作
- 需要记忆一些常用的命令,操作不直观
二、java为GUI开发提供了两个包java.awt 和 java.swing
- java.awt:Abstract Window ToolKit(抽象窗口工具包),需要调用本地系统方法实现功能,属重量级控件
- Java.swing:在AWT的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全由java实现,增强了移植性,属轻量级控件
三、awt体系
四、布局管理器
- 容器中的组件的排放方式,就是布局
- 常见的布局管理器:
- FlowLayout(流式布局管理器),从左到右的顺序排列,Panel默认的布局管理器
- BorderLayout(边界布局管理器),东,南,西,北,中,Frame默认的布局管理器
- GridLayout(网格布局管理器),规则的矩阵
- CardLayout(卡片布局管理器),选项卡
- GridBagLayout(网格包布局管理器),非规则的矩阵
五、Component
- component 是一个具有图形表示能力的对象,可在屏幕上显示,并可与用户进行交互。
- 典型图形用户界面中的按钮、复选框和滚动条都是组件示例。
- Component 类是与菜单不相关的 Abstract Window Toolkit 组件的抽象超类。
- 还可以直接扩展类 Component 来创建一个轻量级组件。
- 轻量级组件是与本机不透明窗口不相关的组件
public abstract class Component implements ImageObserver, MenuContainer, Serializable
{
//添加指定的按键侦听器,以接收发自此组件的按键事件。如果 l 为 null,则不会抛出异常并且不执行动作
public void addKeyListener(KeyListener l){}
//添加指定的鼠标侦听器,以接收发自此组件的鼠标事件。如果侦听器 l 为 null,则不会抛出异常并且不执行动作
public void addMouseListener(MouseListener l){}
//获取组件的名称
public String getName(){}
//将组件的名称设置为指定的字符串。
public void setName(String name){}
//获取此组件的父级
public Container getParent(){}
//返回组件的当前宽度
public int getWidth(){}
//返回组件的当前高度
public int getHeight(){}
//返回组件原点的当前 x 坐标
public int getX(){}
//返回组件原点的当前 y 坐标
public int getY(){}
//请求此 Component 获取输入焦点,并且此 Component 的顶层祖先成为获得焦点的 Window。
public void requestFocus(){}
//移动组件并调整其大小。由 x 和 y 指定左上角的新位置,由 width 和 height 指定新的大小
public void setBounds(int x,
int y,
int width,
int height){}
//将组件移到新位置
public void setLocation(int x,
int y){}
//调整组件的大小,使其宽度为 width,高度为 height。
public void setSize(int width,
int height){}
//根据参数 b 的值显示或隐藏此组件。
public void setVisible(boolean b){}
//根据参数 b 的值启用或禁用此组件。已启用的组件可以响应用户输入并生成事件。默认情况下,组件最初是启用的
public void setEnabled(boolean b){}
}
六、Container
- 一般的 Abstract Window Toolkit(AWT) 容器对象是一个可包含其他 AWT 组件的组件。
- 添加到容器中的组件放在一个列表中。
- 列表的顺序将定义组件在容器内的正向堆栈顺序。
- 如果将组件添加到容器中时未指定索引,则该索引将被添加到列表尾部(此后它位于堆栈顺序的底部)。
public class Container extends Component
{
//构造一个新的 Container
public Container(){}
//将指定组件追加到此容器的尾部。
public Component add(Component comp){}
//将指定组件添加到此容器的给定位置上
public Component add(Component comp,
int index){}
//获取此容器中的第 n 个组件。
public Component getComponent(int n){}
//获取此面板中的组件数
public int getComponentCount(){}
//获取此容器中的所有组件。
public Component[] getComponents(){}
//设置此容器的布局管理器
public void setLayout(LayoutManager mgr){}
//其余方法继承自Componet和Object
}
七、Frame
Frame 是带有标题和边框的顶层窗口
public class Frame extends Window implements MenuContainer
{
//构造一个最初不可见的 Frame 新实例()。Frame 的标题为空
public Frame()
throws HeadlessException{}
//构造一个新的、最初不可见的、具有指定标题的 Frame 对象
public Frame(String title)
throws HeadlessException{}
//将此窗体的菜单栏设置为指定的菜单栏
public void setMenuBar(MenuBar mb){}
//设置此窗体是否可由用户调整大小
public void setResizable(boolean resizable){}
}
八、事件监听机制组成
- 事件源(组件):就是awt或者swing包中的图形界面组件
- 事件(Event):每一个事件源都有自己特有的对应事件和共性事件
- 监听器(Listener):将可以触发某一个事件的动作都已经封装到了监听器中
- 事件处理(引发事件后处理方式):以上三者,在java中都已经定义好了,直接获取其对象来用就ok,我们要做的事情是,对产生的动作进行处理