我正在使用窗口构建器设计 java 应用程序的界面。我需要做的是.. 单击一个按钮会做两件事 1. 执行一些后台任务 2. 在此过程中,在新窗口中显示一个不确定的进度条。我知道我需要多线程来完成这个。
我尝试了一些教程的帮助,但无法实现。
任何人都可以帮忙吗?
代码:我要打开进度条窗口的函数
public void mouseDown(MouseEvent e) {
pbar p=new pbar();
p.caller();
dowork();
p.closeprogress();
}
进度条类
import org.eclipse.swt.widgets.Display;
public class pbar {
protected Shell shell;
public void pcaller() {
try {
//System.err.println("Error: " + bod);
//System.err.println("Error: " + lines);
pbar window = new pbar();
window.open();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Open the window.
*/
public void open() {
Display display = Display.getDefault();
createContents();
shell.open();
shell.layout();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
}
/**
* Create contents of the window.
*/
protected void createContents() {
shell = new Shell();
shell.setSize(315, 131);
shell.setText("Updating!!! Please Wait");
ProgressBar progressBar = new ProgressBar(shell, SWT.INDETERMINATE);
progressBar.setBounds(47, 34, 195, 17);
// ProgressBar pb2 = new ProgressBar(shell, SWT.HORIZONTAL |
SWT.INDETERMINATE);
// pb2.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
}
public void close()
{
shell.close();
}
}
我想当我调用 p.caller() 时,会出现进度条。然后,控制权应该来到原始程序并执行 dowork() 方法。当我完成这个方法时,它会调用 p.progress.close()。我不知道为什么不理解这个简单的程序,忘记回答。