天天看點

AWT 布局管理器

FlowLayout(流控布局管理器):從左向右排列,右邊空間不夠自動換行,有點像響應式開發,視窗自适應.

Ø FlowLayout():使用預設對齊方式,預設垂直、水準間距.

Ø FlowLayout(int align):使用指定對齊方式,預設垂直、平平間距

Ø FlowLayout(int align,int hgap,init vgap):使用指定對齊方式、指定水準、垂直間距

Ø 靜态常量:LEFT、 RIGHT、 CENTER 、LEADING、 TRAILING

Panel、Applet等預設使用FlowLayout布局管理器

BorderLayout:将容器分為:EAST 、SOUTH、WEST、NORTH、CENTER五個區域,

Ø 使用BorderLayout布局管理器添加元件時,需要指定添加哪個區域,如果沒有指定,預設添加到center中

Ø 如果向同一個區域裡面添加多個元件,後放入的元件會覆寫前面的元件。

Ø BorderLayout():使用預設垂直、水準間距

Ø BorderLayout(int hgap,int vgap):使用指定的水準、垂直間距

Ø 靜态常量: EAST 、SOUTH、WEST、NORTH、CENTER

GridLayout布局管理器:将容器分割成網格,每個網格所占的區域大小相同。預設從左向右、從上到下依次添加到每個網格中.與FlowLayout不同的是,放在GridLayout布局管理器中的各個元件的大小由元件所處的區域來決定(每個元件自動漲大到占滿整個區域)。

Ø GridLayout(int rows,int cols):指定行數、列數、預設縱向、橫向間距

Ø GridLayout(int rows,int cols,int hgap,int vgap): 指定行數、列數、縱向、橫向間距

GridBagLayout:管理器中一個元件可以跨越一個或多個網格,并可設定網絡的大小互不相同,進而增加布局的靈活性,有點像表格中的合并單元格.為了處理GridBagLayout管理器中元件的大小、跨越性,Java提供了GridBagConstraints對象與特定的GUI元件關聯

Ø 建立GridBagLayout布局管理器,并指定GUI容器使用該布局管理器

GridBagLayout gbc = <b>new</b> GridBagLayout();

container.setLayout(gbc);

Ø 建立GridBagConstraints對象,并設定該對象的相關屬性

GridBagConstraints gbc = <b>new</b> GridBagConstraints();

       gbc.gridx=2;//設定受該對象控制的GUI元件位于網格的橫向索引

       gbc.gridy=1;//設定受該對象控制的GUI元件位于網格的縱向索引

       gbc.gridwidth=2;//設定受該對象控制的GUI元件橫向跨越多少網絡

       gbc.gridheight=1;//設定受該對象控制的GUI元件縱向跨越多少網絡

Ø 調用GridBagLayout對象的方法來建立GridBagConstraints對象與受控制元件之間的關聯。

gb.setConstraints(c, gbc);//c是元件

Ø 添加元件,與采用普通布局管理器添加元件方法一樣.

Ø 如果需要向容器中添加多個GUI元件,則需重複(2)、(3)、(4)步驟,由于GridBagConstraints對象可以多次重用,是以隻需要建立一個GridBagConstraints對象即可,每次添加GUI元件之前先改變GridBagConstraints對象的屬性即可。

CardLayout:它将加入容器的所有元件看成一疊卡片,每次隻有最上面的那個Componet才可見。

Ø CardLayout():建立預設的CardLayout布局管理器

Ø CardLayout(int hgap,int vgap):指定卡片與容器左右邊界的間距(hgap)、上下邊界(vgap)的間距

Ø first(Container target):顯示target容器中第一個卡片

Ø last(Container target):顯示target容器中最後一個卡片

Ø previous(Container target):顯示target容器中前一個卡片

Ø next(Container target):顯示target容器中後一個卡片

Ø show(Container target,String name):顯示target容器中後一個卡片

絕對定位:

Ø 将容器的布局管理器設定成null:setLayout(null);

Ø 往容器上添加元件時,先調用setBounds()或setSize()方法先設定元件大小、位置.或者直接建立GUI元件時通過構造參數指定該元件的大小、位置,然後将該有元件添加到容器中.

BoxLayout:是Swing引入的一個新的布局,他是用來替代GridBagLayout的,但是保留了GridBagLayout的很多優點,但是沒那麼複雜。BoxLayout可以在垂直和水準兩個方向上擺方元件.

Ø BoxLayout(Container target,int axis):指定建立基于target容器的BoxLayout布局管理器,該布局管理器裡元件按axis方向排列。其中axis有BoxLayout.X_AXIS(橫向)和BoxLayout.Y_AXIS(縱向)兩個方向

Box:是一個特殊的容器,它有點像Panel容器,但是該容器預設使用BoxLayout布局管理器,Box提供了兩個靜态方法來建立Box對象:

Ø createHorizontalBox():建立一個水準排列元件的Box容器

Ø createVerticalBox():建立一個垂直排列元件的Box容器

 BoxLayout沒有提供設定間距的構造器和方法,BoxLayout使用Glue(橡膠)、strut(支架)和RigidArea的元件來控制元件間的距離.其中Glue代表可以在橫向、縱向兩個方向同時拉伸的空白元件(間距),Strut代表可以在橫向、縱向任意一個方向上拉伸的空白元件(間距),RigidArea代表不可拉伸的空白元件(間距).

 Box提供了如下五個靜态方法來建立Glue、Strut和RigidArea:

Ø createHorizontalGlue:建立一條水準Glue(可以兩個方向同時拉伸的間距)

Ø createVerticalGlue:建立一條垂直Glue(可以兩個方向同時拉伸的間距)

Ø createHorizontalStrut:建立一條水準Strut(可以水準方向同時拉伸的間距)

Ø createVerticalStrut:建立一條垂直Strut(可以垂直方向同時拉伸的間距)

Ø createRigidArea(Dimension d):建立指定寬度、高度的RigidArea(不可拉伸的間距)

繼續閱讀