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 = 字體大小

圖形類

相關文章
相關標籤/搜索