2010年7月2日 星期五

Java 視窗佈局管理 - GirdBagLayout 格群佈局管理員

原本設定視窗時,必須要利用 setBounds(int x,int y,int weight,int height) 來慢慢調整,尤其單位是使用 pixels ,在操作上十分麻煩,故改用 GirdBagLayout 來管理元件間的佈置。雖然 GirdBagLayout 是所有視窗佈局管理員內操作最為複雜的,但操作熟練以後,發現元件間的佈置更為方便了。
使用 GirdBagLayout 前,必須要有以下設定:
      Container cp=getContentPane();                        //容器
      cp.setLayout(new GridBagLayout());                  //容器配置使用 GridBagLayout
      GridBagConstraints gbc =new GridBagConstraints();   //控制 GridBagLayout 的物件

下列為 GridBagConstraints 類別的屬性與 method:
欄位
作用
int anchor
當元件小於其顯示區域時才用
static int BOTH
重新訂定元件之寬度及高度
static int CENTER
將元件置於顯示區域之中央位置
static int EAST
將元件置於顯示區域之右側位置,並 於垂直做置中對齊
int fill
當顯示區域大於元件所需之大小才用 此欄位
int gridheight
指定元件顯示區域之列數
int gridwidth
指定元件顯示區域之行數
int gridx
指定元件顯示區域左側之表格
int gridy
指定元件顯示區域上方之表格
static int HORIZONTAL
重新設定元件之水平位置
Insets insets
指定元件外側之間距
int ipadx
指定元件內側之間距x
int ipady
指定元件內側之間距y
static int NONE
表示元件之大小位置不重新設定
static int NORTH
將元件置於顯示區域之上方位置,並 於水平做置中對齊
static int NORTHEAST
將元件置於顯示區域之右上角
static int NORTHWEST
將元件置於顯示區域之左上角
static int RELATIVE
指定元件為其行或列上最後一個元件 之下一個元件,或上一次增加元件之下一個元件
static int REMAINDER
指定元件為其行或列上之最後一個元 件
static int SOUTH
將元件置於顯示區域之下方位置,並 於水平做置中對齊
static int SOUTHEAST
將元件置於顯示區域之右下方位置
static int SOUTHWEST
將元件置於顯示區域之左下方位置
static int VERTICAL
重新設定元件之垂直位置,但不設定 其水平位置
double weightx
指定其它水平空間的配置方式
double weighty
指定其它垂直空間的配置方式
static int WEST
將元件置於顯示區域之左側位置,並 於垂直做置中對齊

例如設計兩個並排的按鈕,其中 B 按鈕的寬度大於 A 按鈕兩倍:
      gbc.gridx=0;gbc.gridy=0;
      cp.add(new JButton("A"),gbc);
      gbc.gridx=1;gbc.gridwidth=2;
      cp.add(new JButton("B"),gbc);

請注意!僅宣告一個 GridBagConstraints 物件控制數個元件時,要留意前面設定過的屬性將影響後面的設定,所以必要時,必須將元件加入容器後,再重新設定為初始值。

參考資料:

沒有留言:

張貼留言