例4.5 下拉框示例。
package edu.ch4;
import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*; import org.eclipse.swt.events.*; public class Sample4_5 {
private static Label lb;
public static void main(String[] args) { }
Display display=new Display();//创建一个display对象。 final Shell shell=new Shell(display);//shell是程序的主窗体 shell.setText(\下拉框示例\);
final Combo combo=new Combo(shell,SWT.NONE); combo.setBounds(10,10,100,25);
lb=new Label(shell,SWT.WRAP); //创建标签,可自动换行
lb.setBounds(120,10,100,35);
Button bt1=new Button(shell,SWT.NONE); bt1.setBounds(20,60,100,25); bt1.setText(\设值\);
bt1.addSelectionListener(new SelectionAdapter(){ });
Button bt2=new Button(shell,SWT.NONE); bt2.setBounds(130,60,100,25); bt2.setText(\取值\);
bt2.addSelectionListener(new SelectionAdapter(){ });
shell.pack(); shell.open();
while(!shell.isDisposed()){ //如果主窗体没有关闭则一直循环 }
display.dispose(); //销毁display
if(!display.readAndDispatch()){ //如果display不忙 display.sleep(); //休眠 }
public void widgetSelected(SelectionEvent e){ //按钮的单击事件 }
public void widgetSelected(SelectionEvent e){ //按钮的单击事件 }
combo.removeAll(); //清空combo for(int i=1;i<=3;i++){ }
combo.select(0); //设置默认选项
combo.add(\第\+i+\项\); //循环添加选项
lb.setText(\你选择的是:\+combo.getText());
}
运行结果如图4.7所示。本例中,按钮bt1和bt2添加了按钮选择监听事件代码。下拉框最初没有值,单击【设置】按钮后将一组数据加入,单击【取值】按钮,标签lb显示取值的结果。
4.2.5 列表框组件
列表框(List类)组件的用法和下拉框(Combo类)相似。 1.列表框(List类)的式样 SWT.NONE:默认式样。
SWT.V_SCROLL:带垂直滚动条。 SWT.MULTI:允许复选。 SWT.SINGLE:允许单选。 2.常用方法
列表框(List类)组件的方法和下拉框(Combo类)是一样的,但由于List可选择多项,而Combo只能选择一项,所以List没有getText()方法,List的取值是用getSelection()方法,返回一个所有选项组成的String数组。
例4.6 列表框示例。
package edu.ch4;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.List; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; public class Sample4_6 {
private static Label lb;
public static void main(String[] args) {
Display display=new Display();//创建一个display对象。 final Shell shell=new Shell(display);//shell是程序的主窗体 shell.setText(\列表框示例\);
final List list=new List(shell,SWT.MULTI|SWT.V_SCROLL|SWT.BORDER); list.setBounds(10,10,100,50);
//声明一个可复选、带垂直滚动条、有边框的列表框。
lb=new Label(shell,SWT.WRAP);
lb.setBounds(120,10,90,50);
Button bt1=new Button(shell,SWT.NONE); bt1.setBounds(20,60,100,25); bt1.setText(\设值\);
bt1.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e){
list.removeAll();
}
}
});
}
for(int i=1;i<=8;i++){ }
list.select(0);
list.add(\第\+i+\项\); //将选项循环加入到列表框中
Button bt2=new Button(shell,SWT.NONE); bt2.setBounds(130,60,100,25); bt2.setText(\取值\);
bt2.addSelectionListener(new SelectionAdapter(){ });
shell.pack(); shell.open();
while(!shell.isDisposed()){ //如果主窗体没有关闭则一直循环 }
display.dispose(); //销毁display
if(!display.readAndDispatch()){ //如果display不忙 display.sleep(); //休眠 }
public void widgetSelected(SelectionEvent e){ }
String[] selected=list.getSelection(); //声明字符串数组保存选项 String outStr=\;
for(int j=0;j outStr=outStr+\\+selected[j]; //将数组中的选项加入到输出字符串 lb.setText(\你选择的是:\+outStr); 本例开始运行时,列表框是空的,单击【设置】按钮,将选项加入到列表框中,按【Ctrl】 键加鼠标左键选项,再按【取值】按钮。运行结果如图4.8所示。 图4.8 列表框 4.2.6 菜单 菜单(Menu类,MenuItem类)是常用的SWT组件,Menu是一个菜单栏,同时也是 一个容器,可以容纳菜单项(MenuItem)。 1.Menu的式样 SWT.BAR:菜单栏,用于主菜单。 SWT.DROP_DOWN:下拉菜单,用于子菜单。 SWT.POP_UP:鼠标右键弹出式菜单。 2.MenuItem的式样 SWT.CASCADE:有子菜单的菜单项。 SWT.CHECK:选中后前面显示一个小勾。 SWT.PUSH:普通型菜单。 SWT.RADIO:选中后前面显示一个圆点。 SWT.SEPARATOR:分隔符。 3.建立菜单的一般步骤: ①首先建立一个菜单栏,需要使用SWT.BAR属性。 Menu mainMenu=new Menu(shell,SWT.BAR); ②在窗体中指定需要显示的菜单栏。 shell.setMenuBar(mainMenu); ③创建顶级菜单项,需要使用SWT.CASCADE属性。 MenuItem fileItem=new MenuItem(mainMenu,SWT.CASCADE); fileItem.setText(\文件&F\); ④创建与顶级菜单项相关的下拉式菜单。 Menu fileMenu=new Menu(shell,SWT.DROP_DOWN); ⑤将顶级菜单项与下拉菜单关联。 fileItem.setMenu(fileMenu); 二级菜单的创建只需重复以上步骤③~⑤。注意:本例创建所有Menu对象的第一个参数都是shell;创建MenuItem对象的第一个参数是该MenuItem所在的Menu对象;如果某Menu是某MenuItem的子菜单,则还要建立关联:MenuItem.setMenu(Menu)。源代码如下: package edu.ch4; import org.eclipse.swt.widgets.*; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.events.*; import org.eclipse.swt.*; public class Sample4_7 { public static void main(String[] args) { Display display=new Display();//创建一个display对象。 final Shell shell=new Shell(display);//shell是程序的主窗体 shell.setText(\菜单示例\); Menu mainMenu=new Menu(shell,SWT.BAR); shell.setMenuBar(mainMenu); //Menu mainMenu=new Menu(shell,SWT.POP_UP); //创建弹出式菜单 //shell.setMenu(mainMenu); //创建弹出式菜单 { //\文件\项 MenuItem fileItem=new MenuItem(mainMenu,SWT.CASCADE); fileItem.setText(\文件&F\); //\文件\菜单