SWT上机五
1. 利用鼠标监听器监听鼠标双击事件。当在文本框中双击鼠标时,显示“文本框中鼠标双击事件发生!”。如图所示:
代码:
package pr;
import org.eclipse.swt.SWT; import org.eclipse.swt.events.*; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.*; public class SJ5_1 {
Display d; Shell s; public SJ5_1(){
d = new Display(); s = new Shell(d);
s.setSize(250,250);
s.setImage(new Image(d,\"c:\\\\a.jpg\")); s.setText(\"SWI... \");
final Text t = new Text(s,SWT.MULTI|SWT.WRAP|SWT.BORDER); t.setBounds(30,30,100,80); s.pack(); s.open();
//添加鼠标监听器
t.addMouseListener(new MouseAdapter(){
public void mouseDoubleClick(MouseEvent e) {//如果鼠标双击
} }
}
t.setText(\"文本框中鼠标双击事件发生!\");//将会在文本框中显示
});
while(!s.isDisposed()){//如果主窗体没有关闭则一直循环 } }
public static void main(String[] args) {
SJ5_1 ss = new SJ5_1(); d.dispose();//销毁d
if(!d.readAndDispatch())//如果d不忙
d.sleep();//休眠
2. 利用键盘监听器监听键盘事件。当在文本框text1中输入信息,按回车键时将text1中的信息显示在text2中。运行结果如图所示:
代码:
package pr;
import org.eclipse.swt.SWT; import org.eclipse.swt.layout.*; import org.eclipse.swt.events.*; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.*; public class SJ5_2 {
Display d; Shell s; SJ5_2(){
d = new Display(); s = new Shell(d);
s.setSize(250,200); s.setText(\"Even...\");
s.setImage(new Image(d,\"c:\\\\a.jpg\"));
FormLayout fl=new FormLayout(); //创建表格布局对象formLayout
Label l1 = new Label(s,SWT.LEFT); l1.setText(\"text1:\");
FormData fd= new FormData();//创建formlayout的一个类formdata的实例
fl.marginHeight = 20; //设置shell的上下边距为20像素 fl.marginWidth =40; //设置shell的左右边距为10像素 fd.width=40; //Label l1的宽度为100像素 l1.setLayoutData(fd);//设置b1的布局数据为fd
Label l2 = new Label(s,SWT.LEFT); l2.setText(\"text2:\");
s.setLayout(fl); //设置shell的布局方式为表格布局
fd fd.height=50; //Label l1的高度为50像素
fd= new FormData();//创建formlayout的一个类formdata的实例fd fd.top = new FormAttachment(l1, 10,SWT.BOTTOM); fd.left = new FormAttachment(l1, 0,SWT.LEFT);
fd.width=40; //Label l2的宽度为100像素 l2.setLayoutData(fd);//设置b1的布局数据为fd
fd.height=50; //Label l2的高度为50像素
final Text t1 = new Text(s,SWT.MULTI|SWT.WRAP|SWT.BORDER ); fd= new FormData( );//创建FormData对象fd
fd.top = new FormAttachment(l1, -10,SWT.TOP); //text t1的顶部比label l1的顶部低10个像素
fd.left = new FormAttachment(l1, 0,SWT.RIGHT); fd.height=40; //设置text t1的高为30像素 fd.width=100;//设置text t1的高为100像素 t1.setLayoutData(fd);//设置b3的布局数据为fd
//text t1的左边框离label l1的右边框对齐
final Text t2 = new Text(s,SWT.MULTI|SWT.WRAP|SWT.BORDER); fd= new FormData();
fd.top = new FormAttachment(l2,-10,SWT.TOP); //text t2的top被设定为与label l2的top低10像素 fd.left = new FormAttachment(l2,0,SWT.RIGHT); //text t2的左边框离label l2的右边框对齐 fd.height=40;//设置text t2的高为30像素 fd.width=100;//设置text t2的宽为100像素 t2.setLayoutData(fd);
t1.addKeyListener(new KeyAdapter(){
/*public void keyPressed(KeyEvent e) { }
}*/
public void keyReleased(KeyEvent e) {
if(e.character==SWT.CR)//如果按下回车键 { }
t2.setText(t1.getText());//把t1的文本内容付给t2
});
s.pack();
s.open();//打开主窗体
while(!s.isDisposed()){//如果主窗体没有关闭则一直循环 }
if(!d.readAndDispatch())//如果d不忙
d.sleep();//休眠
} }
}
d.dispose();//销毁d
public static void main(String[] args) {
SJ5_2 ss = new SJ5_2();
3. 利用组件选择监听器,监听组件选择事件。当点击按钮时,弹出一个信息对话框,如图所示:
代码:
package pr;
import org.eclipse.swt.SWT; import org.eclipse.swt.events.*; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.*; public class SJ5_3 {
Display d; Shell s; SJ5_3(){
d = new Display(); s = new Shell(d);
} }
s.setSize(250,200); s.setText(\"组...\");
s.setImage(new Image(d,\"c:\\\\a.jpg\"));
final Button b = new Button(s,SWT.PUSH |SWT.BORDER); b.setBounds(20,20,90,40); b.setText(\"请点击我\");
b.addSelectionListener(new SelectionAdapter(){
MessageBox messageBox = new //创建对话框
messageBox.setText(\"组件选择事件\"); messageBox.setMessage(\"你好,SWT世界!\"); messageBox.open();
public void widgetSelected(SelectionEvent e){
MessageBox(s,SWT.ICON_INFORMATION|SWT.OK);
}});
s.pack();
s.open();//打开主窗体
while(!s.isDisposed()){//如果主窗体没有关闭则一直循环 } }
public static void main(String[] args) {
SJ5_3 ss = new SJ5_3(); d.dispose();//销毁d
if(!d.readAndDispatch())//如果d不忙
d.sleep();//休眠
实验总结:
此次实验主要是事件监听器的使用,上机题1中用到鼠标双击监听器,当在文本框中双击鼠标时,显示“文本框中鼠标双击事件发生,这个还比较容易实现。上机题2是利用键盘监听器监听键盘事件。当在文本框text1中输入信息,按回车键时将text1中的信息显示在text2中。在这个实验中,if里的条件判断语句至关重要,需要text1中的文本内容以Enter结尾,才能实现将text1中的信息显示在text2中。上机题3 可以模仿书本上的例17—1来做,是建立一个确认的对话框,总得来说这次的上机题不是很难,但是需要把书本上的知识融会贯通。
因篇幅问题不能全部显示,请点此查看更多更全内容