SWT中的布局類

2021-04-01 18:35:28 字數 3494 閱讀 1406

布局是swt中很重要的乙個部分。畢竟人家swt主要做的是ui,什麼東西放在什麼地方就是他們的主要工作。所以我主要看了一下布局相關的東西,並和大家一起分享一下。

layout包中主要提供了連帶上面我們所講過的filllayout方式總共4種方式的布局型別。分別為:

l filllayout(充滿式布局,通常都對只有

一、兩個物件時使用,上面已經介紹過)

l rowlayout(簡單排列式布局,由於功能太弱可以完全被gridlayout取代。我一會簡單介紹一下)

l gridlayout(網格式布局,是我們常用的一種布局。它相當於將乙個螢幕看成是乙個大的**,然後對其進行具體的分配)

l stacklayout(堆疊式布局,通常用於幾個重疊物件的交替顯示)

rowlayout類是簡單布局類,下面給出乙個例子:

package swt.examples;

import .eclipse.swt.swt;

import .eclipse.swt.graphics.devicedata;

import .eclipse.swt.layout.rowlayout;

import .eclipse.swt.widgets.button;

import .eclipse.swt.widgets.display;

import .eclipse.swt.widgets.shell;

public class rowlayout

display.dispose();}}

具體效果如左下圖:

右邊圖是當引數為swt.vertical時的情況。

gridlayout常被稱為**布局。它主要有gridlayout物件類與griddata兩個部分共同組合構成。其中gridlayout類主要負責對整體布局效果的設定,numcolumns負責對每行總格數的設定,

verticalspacing

、horizontalspacing

分別負責對水平與垂直間距的設定,

makecolumnsequalwidth

代表水平平分。

下面我們也用乙個簡單的例子來說明它的具體用法。

package swt.examples;

import .eclipse.swt.swt;

import .eclipse.swt.graphics.devicedata;

import .eclipse.swt.layout.griddata;

import .eclipse.swt.layout.gridlayout;

import .eclipse.swt.widgets.display;

import .eclipse.swt.widgets.shell;

import .eclipse.swt.widgets.text;

public class gridlayout

display.dispose();}}

具體效果如下圖:

從上面的例子可以看出,gridlayout相當於乙個**,而griddata相當於**中的單元格,我們可以通過控制gridlayout來控制建立個每行多少列的**、**的邊距是多少,在通過griddata來設定每個單元格具體是什麼樣子的、是否需要水平或垂直合併單元格、每個單元格具有什麼樣一種拉伸屬性等等。

stacklayout是堆疊式顯示方式顧名思義,就是說某個位置有一堆東西,然後你去選擇使用哪乙個。下面我們還是舉個小例子

package swt.examples;

import .eclipse.swt.swt;

import .eclipse.swt.custom.stacklayout;

import .eclipse.swt.events.mouseevent;

import .eclipse.swt.events.mouselistener;

import .eclipse.swt.graphics.color;

import .eclipse.swt.graphics.rgb;

import .eclipse.swt.layout.filllayout;

import .eclipse.swt.layout.griddata;

import .eclipse.swt.layout.gridlayout;

import .eclipse.swt.widgets.button;

import .eclipse.swt.widgets.composite;

import .eclipse.swt.widgets.display;

import .eclipse.swt.widgets.shell;

public class stacklayout

public void mouseup(mouseevent e)

public void mousedown(mouseevent e)

});btn1.addmouselistener(new mouselistener()

public void mouseup(mouseevent e)

public void mousedown(mouseevent e)

});}

public void open()

display.dispose();

}public static void main(string args)

}具體效果如下圖:

如上例所示stacklayout方法使用很簡單,不需要什麼特殊的設定,只是你需要通過設定你的stacklayout物件的topcontrol屬性為你要顯示的控制項名即可。而且需要記住,每當你設定過topcontrol屬性以後都需要將你的父物件(在上例中為composite)重新layout一下。這樣它才能重新整理顯示。同時在上例中我們提到了事件的用法,我們將會在下面的篇幅對swt中的事件處理進行簡單的介紹。

SWT布局管理器

filllayout 充滿式布局管理器,元件的大小會盡量的充滿整個容器。rowlayout 行列式布局管理器,簡單的排列元件 gridlayout 網格式布局管理器,非常強大,可以勝任所有的布局。formlayout 是布局管理器,通過建立元件各個邊的距離來布局元件,和 gridlayout 一樣強...

SWT布局管理器

filllayout 充滿式布局管理器,元件的大小會盡量的充滿整個容器。rowlayout 行列式布局管理器,簡單的排列元件 gridlayout 網格式布局管理器,非常強大,可以勝任所有的布局。formlayout 是布局管理器,通過建立元件各個邊的距離來布局元件,和 gridlayout 一樣強...

SWT中的Layout總結

1.filllayout 最簡單的layout,它把各種control按照行和列排列,並且每行或每列中各個control大小相同.並且是填 滿擁有這個layout的composite 2.rowlayout 與filllayout非常相似,它也是把各種control按照行和列排列,但是它不強迫每個c...