LayoutManager
)FlowLayout
(流式佈局)流式佈局是最簡單的佈局,該佈局會根據用戶添加的控件的順序依次從左到右放置控件,若是控件不夠,組件滿一行以後,會自動換行一般默認組件對齊方式是居中.該佈局最經常使用於排列按鈕組.java
流佈局按方向性流安排組件,很是相似於段落中的文本行。流的方向由容器的componentOrientation
屬性決定,能夠是兩個值之一:windows
ComponentOrientation.LEFT_TO_RIGHT
ComponentOrientation.RIGHT_TO_LEFT
其排列方式由align
參數決定,可取值:佈局
LEFT
: 組件的每一行都應該左對齊RIGHT
: 組件的每一行都應該右對齊CENTER
:組件的每一行都應該居中對齊LEADING
:這個值表示每一行組件都應該對齊到容器方向的前邊,例如,從左到右方向對齊到左TRAILING
:這個值表示每一行組件都應該對齊到容器方向的後邊,例如,從左到右方向對齊到右默認採用這種佈局的控件: JPanel
、Panel
字體
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
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
一一對應。在事件源上註冊事件監聽器:
XXX.addXXXListener(new XXXXXListener類())
實現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 |
JTextFiled 或JTextArea 等對象的文本改變(textvalueChanged ) |
|
ContainerEvent |
ContainerListener |
ContainerAdapter |
在容器中添加組件(componentAdded )、刪除組件(``componentRemoved`) |
ComponentEvent |
ComponentListener |
ComponentAdapter |
Component 的全部子類移動、移動大小、隱藏或顯示 |
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)
字體類,主要封裝字體名字、字體大小、樣式等信息
public Font(String name, int style, int size); name = "字體名字" style 取下面的常量值: Font.PLAIN = 0(正常) Font.BOLD = 1(加粗) Font.ITALIC = 2(傾斜) size = 字體大小