技术开发 频道

Eclipse开发经典教程:常用SWT组件

文本框

Text组件是SWT中的文本框,在组件中添加一个文本框很简单,只需要指定文本框的父组件和相应的样式即可,例如“Text t = new Text(shell, SWT.MULTI | SWT.BORDER | SWT.WRAP | SWT.V_SCROLL)”语句在shell组件中添加了一个文本框。
文本框有多种显示样式,如例程3所示。
例程3 HelloWorldText.java

public class HelloWorldText { public static void main(String[] args) { Display display = new Display(); Shell shell = new Shell(display); shell.setLayout(new GridLayout(1, false)); // 添加单行文本框 new Text(shell, SWT.BORDER); // 添加右对齐单行文本框 new Text(shell, SWT.RIGHT | SWT.BORDER); // 添加以密码形式显示的文本框 new Text(shell, SWT.PASSWORD | SWT.BORDER); // 添加只读文本框 new Text(shell, SWT.READ_ONLY | SWT.BORDER).setText("Read Only"); // 添加多行显示文本框 Text t = new Text(shell, SWT.MULTI | SWT.BORDER | SWT.WRAP | SWT.V_SCROLL); //给文本属性赋值 t.setText("very long sting test!very long sting test!very long sting test!" +"very long sting test!"); t.setLayoutData(new GridData(GridData.FILL_BOTH)); shell.setSize(200,200); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } display.dispose(); } }

窗口中添加了5个不同样式的文本框,并为每个文本框设置了不同的显示样式,程序运行效果如图4所示。


图4 文本框组件


不同类型的标签只要指定不同的样式即可,如上所示,文本框有左对齐、右对齐、密码框、只读文本框和多行显示的文本框。

下拉框

Combo组件是SWT中的下拉列表框,用户可以通过“Combo combo = new Combo(shell, SWT.DROP_DOWN)”在shell组件上添加下拉列表框,另外,可以通过“combo.setItems (ITEMS)”设置下拉列表框的下拉列表,其中“ITEMS”是String的数组。下拉列表框有几种显示样式,代码如例程4所示。
例程4 HelloWorldCombo.java

public class HelloWorldCombo { //下拉列表项 private static final String[] ITEMS = { "Alpha", "Bravo", "Charlie", "Delta", "Echo", "Foxtrot", "Golf", "Hotel", "India", "Juliet", "Kilo", "Lima", "Mike", "November", "Oscar", "Papa", "Quebec", "Romeo", "Sierra", "Tango", "Uniform", "Victor", "Whiskey", "X-Ray", "Yankee", "Zulu" }; public static void main(String[] args) { Display display = new Display(); Shell shell = new Shell(display); shell.setLayout(new RowLayout()); //添加下拉按钮样式的下拉列表框 Combo combo = new Combo(shell, SWT.DROP_DOWN); //设置下拉列表项 combo.setItems(ITEMS); //添加只读样式的下拉列表框 Combo readOnly = new Combo(shell, SWT.DROP_DOWN | SWT.READ_ONLY); //设置下拉列表项 readOnly.setItems(ITEMS); //添加无下拉按钮样式的下拉列表框 Combo simple = new Combo(shell, SWT.SIMPLE); //设置下拉列表项 simple.setItems(ITEMS); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } display.dispose(); } }

窗口中添加了3个不同样式的下拉列表框,并且设置了下拉列表框的显示样式,程序运行效果如图5所示。


图5 下拉列表框组件


上例中只是添加了Combo的显示信息,通常用户会希望所选择的Item项关联到一个对象,当选择了某一个Item项后,可以直接从此Item项中取得所选的对象,然后操作这些对象。用户可以通过Widget 类的“public void setData (String key, Object value)”和“public Object getData (String key)”方法实现此功能。

Combo是Widget的子类,当初始化Combo时,可以通过setData方法把Item项的字符串和相应的对象关联起来,当选择此项时再通过getData方法把当前选择项的对象取出来。Widget类中通过一个对象数组保存用户设置的对象的引用。

提示:Widget是所有窗口组件的父类,组件如果支持多项数据显示,并可以选择这些数据都可以通过getData和setData方法获得组件关联的对象。

列表

List组件是SWT中的列表框,用户可以通过“List single = new List(shell, SWT.BORDER | SWT.SINGLE | SWT.V_SCROLL)”在shell组件上添加列表框,还可以通过“setItems(ITEMS)”设置下拉列表框的下拉列表,其中“ITEMS”是String的数组。列表框有几种显示样式,代码如例程5所示。
例程5 HelloWorldList.java

public class HelloWorldList { //列表项 private static final String[] ITEMS = { "Alpha", "Bravo", "Charlie", "Delta","Echo", "Foxtrot", "Golf", "Hotel", "India", "Juliet", "Kilo", "Lima", "Mike", "November", "Oscar", "Papa", "Quebec", "Romeo", "Sierra", "Tango", "Uniform","Victor", "Whiskey", "X-Ray", "Yankee", "Zulu" }; public static void main(String[] args) { Display display = new Display(); Shell shell = new Shell(display); shell.setLayout(new FillLayout()); //添加只能单选的列表框 List single = new List(shell, SWT.BORDER | SWT.SINGLE | SWT.V_SCROLL); //添加列表项 for (int i = 0, n = ITEMS.length; i < n; i++) { single.add(ITEMS[i]); } //选择第5项 single.select(4); //添加可多选的列表框 List multi = new List(shell, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL); //添加列表项 multi.setItems(ITEMS); //选择第10项到第12项 multi.select(9, 11); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } display.dispose(); } }

上例窗口中添加了两个列表框,一个为单选列表框,一个为多选列表框,程序运行效果如图6所示。


图6 列表框组件


提示:选择列表框的多项值,可以是连续或不连续的列表项,如果选择不连续的列表项,要先按住Shift键再通过鼠标选择。

0
相关文章