8.2.2. 滑块(Slider), 标尺(Scale)和进度条(ProgressBar)窗口组件
标尺(Scale)表示一段可选择的连续值。范围可以用Scale类的setMinimum() 和setMaximum()方法设定。并可以使用getSelection()方法得到所选择的值。标尺在一次只有一个选择的值。也就是说,没有多选的可能。
图 6. 包含在一起的滑块和标尺
根据传递给构造函数的参数值的不同,我们可以创建不同的滑块和标尺。滑块和标尺常量如表5所示:
表 5. SWT滑块和标尺的样式常量
SWT.HORIZONTAL
SWT.VERTICAL
显示水平或者垂直组件
随意地,你可以使用SWT.BORDER常量来在标尺周围创建边框。这个常量对滑块没有作用。
Source 4. Slider widget example
final Slider slider = new Slider(shell,SWT.VERTICAL);
slider.setMinimum(0);
slider.setMaximum(100);
slider.setIncrement(5);
slider.setPageIncrement(10);
slider.setSelection(25);
slider.addSelectionListener(
new SelectionAdapter()
{
public void widgetSelected(SelectionEvent e)
{
System.out.println("Selection:"+ slider.getSelection());
}
}
);
进度条组件类似于滑块和标尺组件,但是它不能被选择。它用于显示一个任务的进度。你可以对进度条组件使用SWT.SMOOTH and SWT.INTERMINATE常量。
8.2.3. 文本窗口组件
一个文本窗口组件可以用于显示或者编辑文本。另外,你可以使用StyledText窗口组件来用不同的字体和颜色显示文本。StyledText窗口组件允许设置前景、背景色和指定范围文本块的字体。
图 7. Text窗口组件
我们可以使用表6所列的常量来创建Text窗口组件。因此,SWT.H_SCROLL和SWT.V_SCROLL常量可用于对Text窗口组件增加滚动条。
表 6. SWT Text style bit常量
SWT.MULTI
SWT.SINGLE
显示单行还是多行窗口组件
SWT.READ_ONLY
创建只读的组件
SWT.WRAP
文本自动换行
源代码 5是一个简单的使用Text组件的例子.
Source 5. Text widget example
Text text =
new Text(shell, SWT.MULTI|SWT.WRAP);
8.2.4. 列表(List)窗口组件
List窗口组件可用于显示可选择的字符串列表。在选择的情况下,List对象会发送事件通告给它的listeners。这种类型的选择可以是单选,也可以是多选。选择的类型是由SWT.SINGLE和SWT.MULTI常量决定的。List窗口组件是可滚动的组件。因此SWT.H_SCROLL和SWT.V_SCROLL常量可用于给Text窗口组件增加滚动条。
图 8. List 窗口组件
下边的代码片断显示了一个简单的List窗口组件。
Source 6. List example
final List list = new List(shell,SWT.MULTI);
for (int i = 1; i < 11; i++)
{
list.add(i+".)www.korayguclu.de");
}
list.addSelectionListener(
new SelectionAdapter()
{
public void widgetSelected(SelectionEvent e)
{
List list = (List) e.getSource();
String[] str = list.getSelection();
for (int i = 0; i < str.length; i++)
{
System.out.println("Selection: "+str[i]);
}
}
}
);
8.2.5. 窗框组件
窗框组件可用于在可改变的区域里显示组合窗口组件。下图就是一个窗框组件例子。
图 9. 窗框组件
下边是一个基本的窗框组件例子:
Source 7. Sash example
Button button = new Button(shell,SWT.PUSH);
Sash sash = new Sash(shell, SWT.VERTICAL);
Button button1 = new Button(shell,SWT.PUSH);