Abstract Windows Toolkit

AWT模型+事件处理(Abstract Windows Toolkit)

布局管理器(LayoutManager)

FlowLayout(流式布局)

流式布局是最简单的布局,该布局会根据用户添加的控件的顺序依次从左到右放置控件,若是控件不够,组件满一行以后,会自动换行一般默认组件对齐方式是居中.该布局最经常使用于排列按钮组.java

流布局按方向性流安排组件,很是相似于段落中的文本行。流的方向由容器的componentOrientation属性决定,能够是两个值之一:windows

  • ComponentOrientation.LEFT_TO_RIGHT
  • ComponentOrientation.RIGHT_TO_LEFT

其排列方式由align参数决定,可取值:布局

  • LEFT: 组件的每一行都应该左对齐
  • RIGHT: 组件的每一行都应该右对齐
  • CENTER:组件的每一行都应该居中对齐
  • LEADING:这个值表示每一行组件都应该对齐到容器方向的前边,例如,从左到右方向对齐到左
  • TRAILING:这个值表示每一行组件都应该对齐到容器方向的后边,例如,从左到右方向对齐到右

默认采用这种布局的控件: JPanelPanel字体

布局构造方法

FlowLayout():默认的构造方法(居中对齐、5个单位的水平和垂直间隔)code

FlowLayout(int align):指定对齐方式对齐控件,参考常量值:component

FlowLayout.LEFT = 0
FlowLayout.RIGHT = 2
FlowLayout.CENTER = 1
FlowLayout.LEADING = 3
FlowLayout.TRAILING = 4

FlowLayout(int align, int hgap, int vgap):指定对齐方式和对齐水平垂直距离, align参考常量值, hgap为水平距离, vgap 为垂直距离orm

普通方法
public void addLayoutComponent(String name, Component comp)

将指定的组件添加到布局中.对象

name参数指定组件名称, comp指定组件.继承

public int getAlignment()

获取此布局的对齐方式,可能的值为:接口

FlowLayout.LEFT = 0、
FlowLayout.RIGHT = 二、
FlowLayout.CENTER = 一、
FlowLayout.LEADING = 三、
FlowLayout.TRAILING = 4
public boolean getAlignOnBaseline()

若是组件要沿着基线垂直对齐,则返回true。默认值为false。

public int getHgap()

获取组件之间以及组件与容器边界之间的水平间隔。

public int getVgap()

获取组件之间以及组件与容器边界之间的垂直间隔。

public void layoutContainer(Container target)

放置容器。此方法经过在目标容器中重塑组件以知足该FlowLayout对象的对齐,让每一个可见组件得到其首选大小。

target:正在布局的指定组件.

public Dimension minimumLayoutSize(Container target)

返回布局指定目标容器中包含的可见组件所需的最小维数

target:正在布局的指定组件.

返回值:布局指定容器的子组件的最小尺寸(Dimension类)

public Dimension preferredLayoutSize(Container target)

给定指定目标容器中的可见组件,返回此布局的首选维度。

target:正在布局的指定组件.

返回值:布局指定容器的子组件的首选维度(Dimension类)

public void removeLayoutComponent(Component comp)

从布局中移除指定的组件。

public void setAlignment(int align)

设置此布局的对齐方式.参数参考常量值

public void setAlignOnBaseline(boolean alignOnBaseline)

设置组件是否应沿基线垂直对齐。没有基线的组件将居中。默认值为false。

public void setHgap(int hgap)

设置组件之间以及组件与容器边界之间的水平间隔。

public void setVgap(int vgap)

设置组件之间以及组件与容器边界之间的垂直间距。

public String toString()

返回此FlowLayout对象及其值的字符串表示形式。

注意上面的普通方法在awt中的几个布局中都是同样的,所以后面除特殊状况外不重复

BorderLayout(边界布局)

边界布局将容器组件划分为North,West,South,East,Center等几个区域,在将控件放入容器时必须指定放在的区域,一般每一个容器只能放一个组件,但能够经过放置Panel组件来实如今一个区域放置多个组件.

在放置组件时组件会自动扩展大小以填满该区域,North,South会默认自动扩展宽度,高度不变,West,East默认填充只扩展高度,宽度不变.

组件少于5个时,没有放置组件的位置会被其余临近的区域填充占用.

默认采用这种布局的控件:Window、Frame、Dialog

布局构造方法

public BorderLayout():默认方法,构造一个组件之间没有间隙的新边框布局。

public BorderLayout(int hgap, int vgap) :构造具备组件之间指定间隙的边框布局。水平间隙由hgap指定,垂直间隙由vgap指定。

可用常量

该布局的常量一般用于Container中的add方法:包括

BorderLayout.CENTER // 定义组件放在中心
BorderLayout.EAST   // 定义组件放在东边
BorderLayout.NORTH  // 定义组件放在北边
BorderLayout.SOUTH  // 定义组件放在南边
BorderLayout.WEST 	// 定义组件放在西边

还有其余的一些常量,具体用法参考jdk

AFTER_LAST_LINE 
AFTER_LINE_ENDS 
BEFORE_FIRST_LINE 
BEFORE_LINE_BEGINS 
LINE_END 
LINE_START 
PAGE_END 
PAGE_START
demo

GridLayout(网格布局)

网格布局将一个大的布局位置分红几行和几列的网格,每一个网格的大小都是相同的,且每个网格能够放一个组件,放置的组件会自动占据整个网格,只能改变组件与组件之间的水平和垂直距离.

其次,网格布局的网格排列由容器的ComponentOrientation属性决定,取值见流式布局开头的介绍(由左到右排,和由右到左排),默认先排行后排列

构造方法:

GridLayout():默认构造方法,建立一个只有一行一列的网格

GridLayout(int rows, int cols):用指定行数和列数去构造网格

GridLayout(int rows,int cols,int hgap,int vgap):用指定的行数和列数以及其之间的水平垂直间隔来构造网格

普通方法
void setColumns(int cols)

设置布局列数

void setRows(int rows)

设置布局行数

int getColumns()

获取布局列数

int getRows()

获取布局行数

GridBagLayout(网格包布局)

CardLayout(卡片布局)

事件处理机制

java的事件处理机制包括:

  • 事件源: 组件的各类addXXXListener()将组件自己与事件监听器进行绑定
  • 事件监听器:指各类实现了XXXListener接口或者继承了XXXAdapter抽象类的类,负责监听和处理各类XXXEvent
  • 事件:指java.awt.event包中的各类XXXEvent,每一个Event与每一个Listener一一对应。

实现组件事件监听的步骤

  1. 在事件源上注册事件监听器:

    XXX.addXXXListener(new XXXXXListener类())
  2. 实现XXXListener接口

    class XXX implements XXXListener{
    	public void XXXXXX(XXXEvent e){
    	
    	}
    }

经常使用事件处理方法对应表

事件 事件监听器接口 事件监听器类 监听器中包含事件
ActionEvent ActionListener 单击按钮、文本框内回车、单击菜单项等时发生
public void actionPerformed(ActionEvent e)
KeyEvent KeyListener KeyAdapter 输入某个字符(public void keyTyped(KeyEvent e))、
按下某个键(public void keyPressed(KeyEvent e))、
释放某个键(public void keyReleased(KeyEvent e)
MouseEvent MouseMotionListener MouseAdapter 鼠标拖动(public void mouseDragged(MouseEvent e))、
鼠标移动(public void mouseMoved(MouseEvent e)
MouseEvent MouseListener MouseAdapter 鼠标单击(public void mouseClicked(MouseEvent e)
按下左键(public void mousePressed(MouseEvent e)
释放左键(public void mouseReleased(MouseEvent e)
进入组件(public void mouseEntered(MouseEvent e)
离开组件(public void mouseExited(MouseEvent e)
WindowEvent WindowListener WindowAdapter 窗口第一次可见(windowOpened
正在关闭窗口(windowClosing
窗口已经关闭(windowClosed
窗口最小化(windowIconified
窗口最大化(windowDeiconified
窗口获取焦点(windowActivated
窗口失去焦点(windowDeactivated
FocusEvent FocusListener FocusAdapter 获取焦点(focusGained)、失去焦点(focusLost)
TextEvent TextListener JTextFiledJTextArea等对象的文本改变(textvalueChanged
ContainerEvent ContainerListener ContainerAdapter 在容器中添加组件(componentAdded)、删除组件(``componentRemoved`)
ComponentEvent ComponentListener ComponentAdapter Component的全部子类移动、移动大小、隐藏或显示

颜色类和字体类

Color类

Color类封装了sRGB颜色空间中的颜色

构造方法

public	Color(float r, float g, float b);			// 用户指定份量构造一个颜色对象r、g、b的取值为(0.0-1.0)
public	Color(int r, int g, int b);					// 用户指定份量构造一个颜色对象r、g、b的取值为(0-255)
public	Color(int r, int g, int b, int alpha)		// 用户指定份量构造一个颜色对象r、g、b的取值为(0-255)Alpha为透明度(0-100)

普通方法

public	int	getRed();				// 返回当前Color对象的红色份量(0-255)
public	int	getGreen();				// 返回当前Color对象的绿色份量(0-255)
public	int getBlue();				// 返回当前Color对象的蓝色份量(0-255)
public	int getAlpha();				// 返回当前Color对象的透明度份量(0-255)

Font类

字体类,主要封装字体名字、字体大小、样式等信息

构造方法

public	Font(String name, int style, int size);
name = "字体名字"
style 取下面的常量值:
	Font.PLAIN = 0(正常)
	Font.BOLD = 1(加粗)
	Font.ITALIC = 2(倾斜)
size = 字体大小

图形类

相关文章
相关标签/搜索