Java圖形化界面設計——佈局管理器之FlowLayout(流式佈局)

   前文講解了JFrame、JPanel,其中已經涉及到了空佈局的使用。Java雖然可以以像素爲單位對組件進行精確的定位,但是其在不同的系統中將會有一定的顯示差異,使得顯示效果不盡相同,爲此java提供了佈局管理器,以使編寫的圖形界面具有良好的平臺無關性。

 

         注意:所有的佈局管理器均是針對容器來使用的,包括頂層容器和中間容器。

 

一、佈局管理器所屬類包

所屬類包

佈局管理器名稱

說明

Java.awt

FlowLayout(流式佈局)

組件按照加入的先後順序按照設置的對齊方式從左向右排列,一行排滿到下一行開始繼續排列

BorderLayout(邊界佈局)

容器劃分爲東、西、南、北、中五個區域,每個區域只能放置一個組件。

GridLayout(網格佈局)

容器的空間劃分成M×N列的網格區域, 每個區域只能放置一個組件。

CardLayout(卡片佈局)

如同一疊牌,每個牌對應一個組件,但每次只能顯示其中的一張牌。適用於在一個空間中防止多個組件的情況

GridBagLayout(網格包佈局)

GridLayout的升級版,組件仍然是按照行、列放置,但是每個組件可以佔據多個網格

Java.swing

BoxLayout(箱式佈局)

允許在容器中縱向或者橫向防止多個控件

SprigLayout(彈簧佈局)

根據一組約束條件放置控件

空佈局

不使用佈局管理器,按照控件自身提供的大小、位置信息放置控件

 

 

二、容器的默認佈局管理器

各容器都有默認的佈局管理,見下表:

容器

默認佈局方式

頂層容器

JFrame

BorderLayout(邊界佈局)

JDialog

BorderLayout(邊界佈局)

JApplet

FlowLayout(流式佈局)

中間容器

JPanel

FlowLayout(流式佈局)

 

三、FlowLayout(流式佈局)

使用FlowLayout佈局方式的容器中組件按照加入的先後順序按照設置的對齊方式(居中、左對齊、右對齊)從左向右排列,一行排滿(即組件超過容器寬度後)到下一行開始繼續排列。

1、流式佈局特徵如下:

l  組件按照設置的對齊方式進行排列

l  不管對齊方式如何,組件均按照從左到右的方式進行排列,一行排滿,轉到下一行。(比如按照右對齊排列,第一個組件在第一行最右邊,添加第二個組件時,第一個組件向左平移,第二個組件變成該行最右邊的組件,這就是從左向右方式進行排列)

 

2、流式佈局FlowLayout類的常用構造函數和方法

構造函數

名稱

用途

FlowLayout()    

構造一個新的 FlowLayout,它是默認居中對齊的,默認的水平和垂直間隙是5個像素

FlowLayout(int align)

構造一個新的 FlowLayout,它具有指定的對齊方式,默認的水平和垂直間隙是 5 個像素

五個參數值及含義如下:

0或FlowLayout.lEFT ,控件左對齊

1或FlowLayout.CENTER ,居中對齊

2或FlowLayout.RIGHT ,右對齊

3或FlowLayout.LEADING,控件與容器方向開始邊對應

4或FlowLayout.TRAILING,控件與容器方向結束邊對應

如果是0、1、2、3、4之外的整數,則爲左對齊

FlowLayout(int align, int hgap, int vgap)     

創建一個新的流佈局管理器,它具有指定的對齊方式以及指定的水平和垂直間隙。

方法

名稱

用途

Void setAlignment(int align)

設置此佈局的對齊方式。

void setHgap(int hgap)

設置組件之間以及組件與 Container 的邊之間的水平間隙。

void setVgap(int vgap)

設置組件之間以及組件與 Container 的邊之間的垂直間隙。

 

3、FlowLayout 佈局應用代碼段舉例

1)        設置FlowLayout 佈局

JFrame  fr=new JFrame( );

FlowLayout  flow=new FlowLayout( );

fr.setLayout(flow);

上面的語句可以簡化成:
fr.setLayout(new FlowLayout());

2)        設置框架fr爲組件左對齊的FlowLayout佈局 

fr.setLayout(newFlowLayout(FlowLayout.LEFT));

3)        設置框架fr爲組件左對齊的FlowLayout佈局,並且組件的水平間距爲20像素,垂直間距爲40像素。

fr.setLayout(new  FlowLayout(FlowLayout.LEFT,20,40));

 

 

實例:對齊方式

// FlowLayoutDemo.java

importjavax.swing.*;

importjava.awt.*;

public classFlowLayoutDemo extends JFrame {

  public FlowLayoutDemo() {

         //設置窗體爲流式佈局,無參數默認爲居中對齊

    setLayout(new FlowLayout());

         //設置窗體中顯示的字體樣式

    setFont(new Font("Helvetica",Font.PLAIN, 14));

         //將按鈕添加到窗體中

    getContentPane().add(newJButton("Button 1"));

    getContentPane().add(new JButton("Button 2"));

    getContentPane().add(new JButton("Button3"));

    getContentPane().add(newJButton("Button 4"));

  } 

  public static void main(String args[]) {

    FlowLayoutDemo window = newFlowLayoutDemo();

    window.setTitle("流式佈局");

          //該代碼依據放置的組件設定窗口的大小使之正好能容納你放置的所有組件

    window.pack();

    window.setVisible(true);

         window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

         window.setLocationRelativeTo(null);                //讓窗體居中顯示

  }

}

 

         程序執行結果如下圖所示,生成了一個居中顯示的窗體,上面有四個按鈕,留意按鈕之間,按鈕與窗體的上下左右邊緣都是默認5個像素的間距。改變窗體大小,如下圖所示,分別是原始界面、拉寬原始界面、拉窄原始界面,組件和界面的間距。

 

        

 

修改程序代碼體會界面佈局效果:

setLayout(newFlowLayout());

將上面源程序中的代碼更改如下,然後做出如下更改:

setLayout(newFlowLayout(0));  //組件左對齊

setLayout(newFlowLayout(FlowLayout.RIGHT,10,15));  //組件右對齊,組件間水平間距爲10像素,垂直間距爲15像素

發佈了10 篇原創文章 · 獲贊 2 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章