Java程序设计之swt教程 下载本文

内容发布更新时间 : 2024/12/23 11:28:03星期一 下面是文章的全部内容请认真阅读。

例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\); //\文件\菜单