亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

SWT(JFace)體驗之GridLayout布局

2020-01-31 16:51:39
字體:
來源:轉載
供稿:網友
GridLayout布局

GridLayout 布局的功能非常強大,也是筆者常用的一種布局方式。GridLayout是網格式布局,它把父組件分成一個表格,默認情況下每個子組件占據一個單元格的空間,每個子組件按添加到父組件的順序排列在表格中。GridLayout提供了很多的屬性,可以靈活設置網格的信息。另外,GridLayout 布局提供了GridData類,子組件可以設置相應的GridData,例如 “dogPhoto.setLayoutData(gridData)”,GridData可以設置每個組件當做單元格的信息。

GridLayout的風格

GridLayout類提供了GridLayout 布局中劃分網格的信息,主要通過以下幾個參數進行設置。

NumColumns:通過“gridLayout.numColumns”屬性可以設置父組件中分幾列顯示子組件。

MakeColumnsEqualWidth:通過“gridLayout. makeColumnsEqualWidth”屬性可以設置父組件中子組件是否有相同的列寬,當MakeColumnsEqualWidth為true時表示每列的列寬相等。
MarginLeft:表示當前組件距離父組件左邊距的像素點個數。
MarginRight:表示當前組件距離父組件右邊距的像素點個數。
MarginTop:表示當前組件距離父組件上邊距的像素點個數。
MarginBottom:表示當前組件距離父組件下邊距的像素點個數。
HorizontalSpacing:表示子組件的水平間距。
VerticalSpacing:表示子組件的垂直間距。

GridData的相關屬性

GridLayout布局的靈活之處在于它利用網格布局數據GridData。通過GridData可以設置子組件在網格中的填充方式、大小邊距等信息,用戶可以通過子組件的setLayoutData方法設置網格布局數據。

GridData可以控制子組件在網格中的位置大小等相關顯示信息。GridData可以設置如下的一些屬性。

HorizontalAlignment:表示水平對齊方式。

VerticalAlignment:表示子組件的垂直對齊方式,值和水平方式一樣。
HorizontalIndent:表示子組件水平偏移多少像素。此屬性和“horizontalAlignment = GridData.BEGINNING”屬性一起使用。

HorizontalSpan:表示組件水平占據幾個網格。

GrabExcessHorizontalSpace:表示當父組件大小改變時,子組件是否以水平方向搶占空間。
GrabExcessVerticalSpace:表示當父組件大小改變時,子組件是否以垂直方向搶占空間。
WidthHint:表示子組件的寬度為多少像素(前提是未設置其他相關屬性)。
HeightHint:表示子組件的高度為多少像素(前提是未設置其他相關屬性)。

另外,GridData可以通過構造函數指定相應的屬性值,有興趣的讀者可以參考GridData類的構造函數。

測試代碼:

GridLayoutSample.java
復制代碼 代碼如下:

package swt_jface.demo2;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.List;
import org.eclipse.swt.widgets.Shell;
public class GridLayoutSample {

Display display = new Display();
Shell shell = new Shell(display);
public GridLayoutSample() {

GridLayout gridLayout = new GridLayout();
gridLayout.numColumns = 2;
gridLayout.makeColumnsEqualWidth = true;
shell.setLayout(gridLayout);
Button button1 = new Button(shell, SWT.PUSH);
button1.setText("button1");
button1.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));

List list = new List(shell, SWT.BORDER);
list.add("item 1");
list.add("item 2");
list.add("item 3");
list.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_CENTER));

Button button2 = new Button(shell, SWT.PUSH);
button2.setText("button #2");
GridData gridData = new GridData(GridData.VERTICAL_ALIGN_END);
gridData.horizontalIndent = 5;
button2.setLayoutData(gridData);

Button button3 = new Button(shell, SWT.PUSH);
button3.setText("3");
button3.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL));

shell.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
public static void main(String[] args) {
new GridLayoutSample();
}
}

GridLayoutSampleGrabSpace.java
復制代碼 代碼如下:

package swt_jface.demo2;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
public class GridLayoutSampleGrabSpace {
public GridLayoutSampleGrabSpace() {

Display display = new Display();
Shell shell = new Shell(display);

GridLayout gridLayout = new GridLayout();
gridLayout.numColumns = 3;
shell.setLayout(gridLayout);

Label label = new Label(shell, SWT.BORDER);
label.setText("label");

GridData gridData3 = new GridData();
gridData3.widthHint = 60;
gridData3.heightHint = 20;

label.setLayoutData(gridData3);

Text text = new Text(shell, SWT.SINGLE | SWT.BORDER);
text.setText("text");

GridData gridData = new GridData();
gridData.grabExcessHorizontalSpace = true;
gridData.grabExcessVerticalSpace = true;
gridData.horizontalAlignment = GridData.FILL;
gridData.verticalAlignment = GridData.FILL;
text.setLayoutData(gridData);

Button button = new Button(shell, SWT.PUSH);
button.setText("button");

GridData gridData2 = new GridData();
gridData2.grabExcessVerticalSpace = true;
gridData2.grabExcessHorizontalSpace = true;
gridData2.verticalAlignment = GridData.FILL;
gridData2.horizontalAlignment = GridData.FILL;

button.setLayoutData(gridData2);

shell.setSize(300, 80);
//shell.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
public static void main(String[] args) {
new GridLayoutSampleGrabSpace();
}
}

GridLayoutSampleSpan.java
復制代碼 代碼如下:

package swt_jface.demo2;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.List;
import org.eclipse.swt.widgets.Shell;
public class GridLayoutSampleSpan {

Display display = new Display();
Shell shell = new Shell(display);
public GridLayoutSampleSpan() {

GridLayout gridLayout = new GridLayout();
gridLayout.numColumns = 2;
gridLayout.makeColumnsEqualWidth = true;
shell.setLayout(gridLayout);
Button button1 = new Button(shell, SWT.PUSH);
button1.setText("button1");
button1.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));

List list = new List(shell, SWT.BORDER);
list.add("item 1");
list.add("item 2");
list.add("item 3");
list.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_CENTER));

Button button2 = new Button(shell, SWT.PUSH);
button2.setText("button #2");
GridData gridData = new GridData(GridData.VERTICAL_ALIGN_END);
gridData.horizontalSpan = 2;
gridData.horizontalAlignment = GridData.FILL;
button2.setLayoutData(gridData);

Button button3 = new Button(shell, SWT.PUSH);
button3.setText("3");
GridData gridData2 = new GridData(GridData.VERTICAL_ALIGN_END);
gridData2.verticalSpan = 3;
button3.setLayoutData(gridData2);

shell.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
public static void main(String[] args) {
new GridLayoutSampleSpan();
}
}

下面這個例子布局稍微復雜一點:
復制代碼 代碼如下:

package swt_jface.demo2;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CLabel;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
public class Sample {

Display display = new Display();
Shell shell = new Shell(display);
public Sample() {
shell.setText("Book Entry Demo");
GridLayout gridLayout = new GridLayout(4, false);
gridLayout.verticalSpacing = 8;
shell.setLayout(gridLayout);
Label label = new Label(shell, SWT.NULL);
label.setText("Title: ");
Text title = new Text(shell, SWT.SINGLE | SWT.BORDER);
GridData gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
gridData.horizontalSpan = 3;
title.setLayoutData(gridData);
label = new Label(shell, SWT.NULL);
label.setText("Author(s): ");
Text authors = new Text(shell, SWT.SINGLE | SWT.BORDER);
gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
gridData.horizontalSpan = 3;
authors.setLayoutData(gridData);
label = new Label(shell, SWT.NULL);
label.setText("Cover: ");
gridData = new GridData();
gridData.verticalSpan = 3;
label.setLayoutData(gridData);
CLabel cover = new CLabel(shell, SWT.NULL);
gridData = new GridData(GridData.FILL_HORIZONTAL);
gridData.horizontalSpan = 1;
gridData.verticalSpan = 3;
gridData.heightHint = 100;
gridData.widthHint = 100;
cover.setLayoutData(gridData);
label = new Label(shell, SWT.NULL);
label.setText("Pages");
Text pages = new Text(shell, SWT.SINGLE | SWT.BORDER);
pages.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
label = new Label(shell, SWT.NULL);
label.setText("Publisher");
Text pubisher = new Text(shell, SWT.SINGLE | SWT.BORDER);
pubisher.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
label = new Label(shell, SWT.NULL);
label.setText("Rating");
Combo rating = new Combo(shell, SWT.READ_ONLY);
rating.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
rating.add("5");
rating.add("4");
rating.add("3");
rating.add("2");
rating.add("1");
label = new Label(shell, SWT.NULL);
label.setText("Abstract:");
Text bookAbstract =
new Text(
shell,
SWT.WRAP
| SWT.MULTI
| SWT.BORDER
| SWT.H_SCROLL
| SWT.V_SCROLL);
gridData =
new GridData(
GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL);
gridData.horizontalSpan = 3;
gridData.grabExcessVerticalSpace = true;
bookAbstract.setLayoutData(gridData);
Button enter = new Button(shell, SWT.PUSH);
enter.setText("Enter");
gridData = new GridData();
gridData.horizontalSpan = 4;
gridData.horizontalAlignment = GridData.END;
enter.setLayoutData(gridData);
title.setText("Professional Java Interfaces with SWT/JFace");
authors.setText("Jack Li Guojie");
pages.setText("500pp");
pubisher.setText("John Wiley & Sons");
cover.setBackground(new Image(display, "C:/eclipse32.gif"));
bookAbstract.setText(
"This book provides a comprehensive guide for /n"
+ "you to create Java user interfaces with SWT/JFace. ");
shell.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
public static void main(String[] args) {
new Sample();
}
}

GridLayout 布局的功能非常強大,也是筆者常用的一種布局方式。GridLayout是網格式布局,它把父組件分成一個表格,默認情況下每個子組件占據一個單元格的空間,每個子組件按添加到父組件的順序排列在表格中。

GridLayout提供了很多的屬性,可以靈活設置網格的信息。另外,GridLayout 布局提供了GridData類,子組件可以設置相應的GridData,例如“dogPhoto.setLayoutData(gridData)”,GridData可以設置每個組件當做單元格的信息。

14.11.1 GridLayout的風格

GridLayout類提供了GridLayout 布局中劃分網格的信息,主要通過以下幾個參數進行設置。

NumColumns:通過“gridLayout.numColumns”屬性可以設置父組件中分幾列顯示子組件,如表14-4所示。

表14-4  NumColumns效果

列    數

顯 示 效 果

numColumns = 1

 

numColumns = 2

 

numColumns = 3

 


MakeColumnsEqualWidth:通過“gridLayout. makeColumnsEqualWidth”屬性可以設置父組件中子組件是否有相同的列寬,當MakeColumnsEqualWidth為true時表示每列的列寬相等。

MarginLeft:表示當前組件距離父組件左邊距的像素點個數。

MarginRight:表示當前組件距離父組件右邊距的像素點個數。

MarginTop:表示當前組件距離父組件上邊距的像素點個數。

MarginBottom:表示當前組件距離父組件下邊距的像素點個數。

HorizontalSpacing:表示子組件的水平間距。

VerticalSpacing:表示子組件的垂直間距。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产一区二区三区18| 欧美精品久久久久久久久| 国产精品久久在线观看| 海角国产乱辈乱精品视频| 中文字幕亚洲欧美日韩2019| 成人福利在线视频| 国产精品视频成人| 欧美中文字幕精品| 久久久亚洲影院你懂的| 国产日本欧美视频| 中文字幕欧美日韩在线| 中文字幕欧美亚洲| 亚洲欧洲偷拍精品| 视频一区视频二区国产精品| 亚洲一区二区三区视频| 亚洲999一在线观看www| 久久久成人精品视频| 成人午夜激情网| 中文字幕亚洲专区| 久久久人成影片一区二区三区| 亚洲性夜色噜噜噜7777| 国产精品丝袜久久久久久不卡| 亚洲精品456在线播放狼人| 国产精品免费一区豆花| 欧美男插女视频| 国产精品网址在线| 欧美激情网友自拍| 91精品国产自产91精品| 国产精品第2页| 精品国产999| 欧美激情一二区| 亚洲欧美成人一区二区在线电影| 欧美成人免费观看| 日韩欧美在线播放| 韩国欧美亚洲国产| 亚洲国产成人精品电影| 日韩免费不卡av| 亚洲成人久久久久| 精品视频在线播放| 欧美一区二区三区……| 国产精品在线看| 国产精品视频免费在线观看| 久久久伊人日本| 久久天天躁夜夜躁狠狠躁2022| 91久久久久久久久| 成人a视频在线观看| 国产精品∨欧美精品v日韩精品| 久久精品99无色码中文字幕| 国产精品久久久久久av下载红粉| 欧美激情视频网址| 在线视频中文亚洲| 久久久国产精彩视频美女艺术照福利| 性色av一区二区三区在线观看| 777777777亚洲妇女| 久久6免费高清热精品| 色播久久人人爽人人爽人人片视av| 中文字幕av一区中文字幕天堂| 日本三级韩国三级久久| 中文字幕精品国产| 日韩欧美一区二区三区| 国产精品免费一区| 日韩欧美aaa| 色久欧美在线视频观看| 亚洲女人被黑人巨大进入al| 在线日韩第一页| 欧美片一区二区三区| 成人妇女免费播放久久久| 国产日本欧美在线观看| 国产精品视频xxx| 欧美性视频在线| 中文字幕亚洲图片| 国产精品日韩在线观看| 欧美性极品少妇精品网站| 一区二区三区高清国产| 91po在线观看91精品国产性色| 91在线视频导航| 欧美亚洲第一区| 亚洲高清免费观看高清完整版| 午夜精品久久久久久99热软件| 色综合天天综合网国产成人网| 国产欧美日韩中文字幕在线| 97在线观看视频| 欧美特级www| 欧美激情videos| 久久久国产一区二区三区| 久久久久久久久久国产精品| 欧美孕妇孕交黑巨大网站| 91亚洲精华国产精华| 欧美日韩一区二区精品| 91九色在线视频| 一区二区成人av| 欧美精品九九久久| 国产午夜精品一区二区三区| 国产精品视频内| 日韩在线视频中文字幕| 91欧美日韩一区| 不卡中文字幕av| 日本欧美一级片| 亚洲欧美色图片| 日韩精品亚洲精品| 国产日韩精品在线观看| 日韩欧美a级成人黄色| 欧美色videos| 欧美激情视频免费观看| 最近中文字幕mv在线一区二区三区四区| 日韩国产高清视频在线| 中文字幕亚洲一区| 中文字幕精品一区久久久久| 激情久久av一区av二区av三区| 亚洲欧美日韩国产成人| 亚洲激情在线观看视频免费| 亚洲色图日韩av| 欧美国产日韩一区二区在线观看| 欧美成人黑人xx视频免费观看| 国产www精品| 精品五月天久久| 日韩欧美综合在线视频| 亚洲国产美女精品久久久久∴| 性欧美激情精品| 韩剧1988在线观看免费完整版| 亚洲国产高清高潮精品美女| 亚洲成人在线视频播放| 欧美在线视频一区| 麻豆乱码国产一区二区三区| 福利精品视频在线| 国产经典一区二区| 国产精品国产三级国产aⅴ9色| 98精品国产高清在线xxxx天堂| 欧美日韩视频在线| 久热精品视频在线免费观看| 国产精品免费久久久久久| 亚洲精品二三区| 日韩中文字幕在线视频| 国产精品视频网址| 日韩亚洲成人av在线| 日韩欧美在线播放| 国产专区精品视频| 欧美日产国产成人免费图片| 欧美日韩另类字幕中文| 九九热99久久久国产盗摄| 久久精品国亚洲| 性亚洲最疯狂xxxx高清| 欧美视频在线免费看| 亚洲精品久久久久久久久久久久| 欧美大奶子在线| 国产日韩精品在线| 高清日韩电视剧大全免费播放在线观看| 国产精品劲爆视频| 韩国精品美女www爽爽爽视频| 欧美国产在线电影| 国产91免费观看| 国产精品h在线观看| 亚洲欧美日韩一区二区三区在线| 色av吧综合网| 国产精品福利久久久| 亚洲国产精品va在线看黑人| 欧美另类极品videosbest最新版本| 成人午夜黄色影院| 国产伦精品一区二区三区精品视频| 成人免费淫片aa视频免费| 亚洲精品资源在线| 亚洲精品久久久久国产| 国产69精品久久久久9| 国产98色在线|