关于一个提示对话框的有关问题
关于一个提示对话框的问题!
用SWT做的界面,程序中有一段程序执行需要的时间比较长,想在运行时弹出一个提示,表明程序正在运行,有什么思路?我先试着直接在运行这段程序之前弹出对话框,弹出对话框后程序停止在这里,不能运行下面程序,试着用线程弹出提示对话框,结果一样!
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
public class test {
public static void main(String[] args){
Display display =Display.getDefault();
Shell shell = new Shell(display);
//在运行时间较长的程序段时弹出对话框
MessageBox dialog=new MessageBox(shell,SWT.OK|SWT.ICON_INFORMATION);
dialog.setText("ok");
dialog.setMessage("程序正在运行,请等待!");
dialog.open();
//运行时间较长的程序段
System.out.println("运行时间较长");
shell.open();
shell.layout();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
}
}
------解决方案--------------------
GUI线程只有一条。
你的策略应该是:用新的线程去负责 “一段程序执行需要的时间比较长” 的内容。然后用弹出对话框去阻塞整个图形界面。
用SWT做的界面,程序中有一段程序执行需要的时间比较长,想在运行时弹出一个提示,表明程序正在运行,有什么思路?我先试着直接在运行这段程序之前弹出对话框,弹出对话框后程序停止在这里,不能运行下面程序,试着用线程弹出提示对话框,结果一样!
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
public class test {
public static void main(String[] args){
Display display =Display.getDefault();
Shell shell = new Shell(display);
//在运行时间较长的程序段时弹出对话框
MessageBox dialog=new MessageBox(shell,SWT.OK|SWT.ICON_INFORMATION);
dialog.setText("ok");
dialog.setMessage("程序正在运行,请等待!");
dialog.open();
//运行时间较长的程序段
System.out.println("运行时间较长");
shell.open();
shell.layout();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
}
}
------解决方案--------------------
GUI线程只有一条。
你的策略应该是:用新的线程去负责 “一段程序执行需要的时间比较长” 的内容。然后用弹出对话框去阻塞整个图形界面。