文章目录
图形用户界面描述
java.awt包: 提供了大量进行GUI设计所使用的类和接口,是进行GUI程序设计的基础。
javax.swing包:由100%纯Java实现的, 没有本地代码,不依赖操作系统的支持,因而也称为轻量级(light-weighted) 组件,它的出现使得Java的图形用户界面上了一个台阶。
创建图形用户界面主要有哪些步骤呢?
(1)创建容器
(2)布局管理
(3)添加组件
(4)事件处理
JFrame类
容器Container是一个类,它允许组件被放置在其中。
方法名 | 方法功能 |
---|---|
JFrame( ) | 构造JFrame的一个实例(初始时不可见) |
JFrame(String title) | 构造一个初始不可见的、具有指定标题的JFrame对象。 |
方法名 | 方法功能 |
---|---|
boolean isResizable() | 判断frame是否可调整大小 |
remove( MenuComponent m) | 从frame移除指定的菜单栏 |
setIconImage( Image image) | 设置frame最小化时显示的图标 |
setJMenuBar(MenuBar mb) | 将frame的菜单栏设置为指定的菜单栏 |
setResizable( boolean resizable) | 设置frame是否可由用户调整大小 |
setTitle(String title) | 将frame的标题设置为指定的字符串 |
方法名 | 方法功能 |
---|---|
setSize( int width,int height) | 设置frame大小 |
setLocation(int x,int y) | 设置frame位置,其中(x,y)为左上角坐标 |
setDefaultCloseOperation( int operation) | DO_NOTHING_ ON _CLOSE HIDE_ON_CLOSE DISPOSE_ON_CLOSE EXIT_ON_CLOSE |
常用布局
布局管理
Java为了实现跨平台的特性并获得动态的布局效果,将容器内的所有组件安排给一个"布局管理器”负责管理,如排列顺序、组件大小、位置等。
不同的布局管理器使用不同算法和策略,容器可以通过setLayout方法选择不同的布局管理器来决定布局。
Java提供了FlowLayout、BorderLayout、
CardLayout、GridLayout、 BoxLayout、
GridBagLayout等多种布局管理类,以满足不
同应用的需求,这些布局管理类包含在java.awt
或javax.swing包中。
流式布局一一FlowLayout
FlowLayout是JPanel类缺省的布局管
理器。其组件的放置规律是从上到下、从左
到右进行放置。
方法名 | 方法功能 |
---|---|
FlowLayout( int align, int hgap, int vgap); 如: new FlowLayout(FlowLayout.LEFT,20,40); | 第一个参数是组件的对齐方式,第二个参数是组件之间横向间隔,第三个参数是组件之间的纵向间隔,单位是象素。 |
FlowLayout(int align); 如: new FlowLayout(FlowLayout.LEFT); | 它具有指定的对齐方式,默认的水平和垂直间隙是5个单位。 |
FlowLayout(); | 间隔和纵向间隔都是缺省值5个象 |
边界布局一一BorderLayout
BorderLayout是JFrame缺省的布局管理
器,如图所示它把容器分成5个区域:
North,
South,
East, West和Center,每个区域只
能放置一个组件。
方法名 | 方法功能 |
---|---|
BorderLayout(int hgap, int vgap); | 构造一个具有指定组件间距的边界布局 |
BorderL ayout(); | 构造一.个组件之间没有间距的边界布局 |
容器嵌套
一个包含了多个组件的容器本身也可以作为
一个组件加到另一个容器中去,容器中再添
加容器,叫做容器的嵌套。
实现容器的嵌套,需要借助于JPaneI作为
中间的容器。
JPanel常用构造方法
方法名 | 方法功能 |
---|---|
JPanel(LayoutManager layout) | 创建具有指定布局管理器的JPanel容器 |
JPanel() | 使用默认的布局管理器FlowLayout创建JPanel容器 |
卡片布局一CardLayout
CardLayout布局将容器中的每个组件
看作一张卡片,一次只能看到一张卡片。
CardLayout主要构造方法:
方法名 | 方法功能 |
---|---|
CardLayout () | 创建一个间距大小为0的卡片布局 |
CardLayout(int hgap, int vgap) | 创建一个指定水平间距和垂直间距的卡片布局 |
卡片布局一CardLayout
方法名 | 方法功能 |
---|---|
void first(Container parent) | 移到指定容器的第一张卡片 |
Void next(Container parent) | 移到指定容器的下一张卡片 |
void previous( Container parent) | 移到指定容器的前一张卡片 |
void last(Container parent) | 移到指定容器的最后一张卡片 |
void show(Container parent,String name) | 显示指定卡片 |
网格布局-- GridLayout
GridLayout布局以矩形网格形式对
容器的组件进行布置。容器被分成大小
相等的矩形,一个矩形中放置一个组件。
GridLayout主要构造方法
方法名 | 方法功能 |
---|---|
GridLayout() | 以默认的单行、每列布局一个组件的方式构造网格布局 |
GridLayout(int rows,int cols) | 以指定的行和列构造网格布局 |
GridLayout(int rows,int cols,int hgap,int vgap) | 以指定的行、列、水平间距和垂直间距构造网格布局 |
事件处理
Java事件处理四要素
事件源:究竟是谁引发了事件的发生。在面向对象编程语言中,事件源指的是引发事件发生的各个组件。
事件:即引发了什么类型的事件发生。
在Java中不同类型的事件会对应相应
的事件类。
事件处理者:究竟谁有能力对事件进行处理。
注册:建立事件源和事件处理者的关联。
例:
事件类型 | 触发事件的动作 |
---|---|
ActionEvent | 当用户单击按钮、选择菜单项或选择一个列表项时产生ActionEvent事件 |
ItemEvent | 当用户在组合框选择一项时产生ItemEvent事件 |
TextEvent | 当文本域或文本框中的内容发生变化时产生TextEvent事件 |
FocusEvent | 组件得到焦点或失去焦点时发生 |
WindowEvent | 窗口被激活、图标化、还原或关闭时发生 |
KeyEvent | 按下或释放一个键时发生 |
MouseEvent | 按下、释放鼠标按钮,移动或拖动鼠标时发生 |
接口 | 需要实现的方法 | 说明 |
---|---|---|
ActionListener | actionPerformed(ActionEvent e) | 最广泛使用的事件处理接口 |
ItemListener | itemStateChanged (ItemEvent e) | 在用户已选定或取消选定某项时调用,用于列表及具有选项变化的组件 |
TextListener | textValueChanged (TextEvent e) | 文本的值已改变时调用 |
FocusListener | focusGained(FocusEvent e)focusLost(FocusEvent e) | 1.组件获得键盘焦点时调用2.组件失去键盘焦点时调用 |
KeyListener | keyPressed(KeyEvent e) keyReleased(KeyEvent e) keyTyped(KeyEvent e) | 1.按下某个键时 2. 释放某个键时 3.键入某个键时 |
MouseListener | mouseClicked(MouseEvent e) mouseEntered(MouseEvent e) mouseExited(MouseEvent e) mousePressed( MouseEvent e) mouseReleased MouseEvent e) | 1.鼠标按键在组件上单击 2.(按下并释放) 3. 鼠标进入到组件 4. 鼠标离开组件 5.鼠标按键在组件上按下鼠标按钮在组件上释放 |
MouseMotion Listener | mouseDragged( MouseEvent e) mouseMoved( MouseEvent e) | 1.鼠标按键在组件上按下并拖动2.鼠标光标移动到组件上 |
接口 | 适配器 |
---|---|
ActionListener | 无 |
ItemIistencr | 无 |
AdjustmentListener | 无 |
ComponentI istener | ComponentAdapter |
MouseListener | MouseAdapter |
MouseMotionListener | MouseMotionAdapter |
WindowListener | Window Adapter |
KeyListener | KeyAdapter |
接口 | 需要实现的方法 | 说明 |
---|---|---|
MouseListener | mouseClicked( MouseEvent e) mouseEntered(MouseEvent e) mouseExited(MouseEvent e) mousePressed(MouseEvent e) mouseReleased( MouseEvent e) | 1.鼠标按键在组件上单击 2.(按下并释放)3.鼠标进入到组件4.鼠标离开组件4.鼠标按钮在组件上释放 |