SWI程序在运行的过程中,通常会出现处理某一事件的时候,需要等待一段时间,处理结束以后,主界面再响应其他的事件。在这种情况下,一般会通过显示一个提示对话框,说明该操作正在运行,请稍候,处理结束后,关闭对话框,主界面可用。
如果仅仅是弹出一个对话框,此时主程序会等待对话框的结束,然后执行对话框后面的代码,需要对话框自己适当时自己关闭,可以考虑采用多线程的方式。
我们在对话框代码中,
(1)继承了Dialog类并实现了Runnable接口;
(2)打开对话框,然后启动时间处理线程;
(3)当处理线程执行run()完毕后,关闭对话框。
在我的工程中,点击按钮以后,发送消息给客户端,客户端进行处理,间隔一段时间,
向服务端返回处理结果,在这个过程中,服务端主界面进行等待,弹出对话框(里面线程对于socket端口进行read处理),当read到内容以后,线程关闭对话框,主线程继续进行。
如果仅仅是弹出一个对话框,此时主程序会等待对话框的结束,然后执行对话框后面的代码,需要对话框自己适当时自己关闭,可以考虑采用多线程的方式。
我们在对话框代码中,
(1)继承了Dialog类并实现了Runnable接口;
(2)打开对话框,然后启动时间处理线程;
(3)当处理线程执行run()完毕后,关闭对话框。
在我的工程中,点击按钮以后,发送消息给客户端,客户端进行处理,间隔一段时间,
向服务端返回处理结果,在这个过程中,服务端主界面进行等待,弹出对话框(里面线程对于socket端口进行read处理),当read到内容以后,线程关闭对话框,主线程继续进行。
- package gui;
- import java.io.DataInputStream;
- import java.io.IOException;
- import org.eclipse.swt.SWT;
- import org.eclipse.swt.events.ShellAdapter;
- import org.eclipse.swt.events.ShellEvent;
- import org.eclipse.swt.widgets.Dialog;
- import org.eclipse.swt.widgets.Display;
- import org.eclipse.swt.widgets.Label;
- import org.eclipse.swt.widgets.Shell;