我正在使用窗口生成器設計java應用程序的接口。我需要做的是.. 點擊一個按鈕做兩件事1.做一些後臺任務 2.當這項工作正在進行中時,在新窗口中顯示一個不確定的進度條。 我知道我需要多線程才能完成此任務。swt在新窗口中的不確定進度條
我嘗試了一些教程的幫助,但無法實現這一點。
任何人都可以幫忙嗎?
代碼:從那裏我想打開進度條窗口
public void mouseDown(MouseEvent e) {
pbar p=new pbar();
p.caller();
dowork();
p.closeprogress() 功能;
}
ProgressBar類
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()。 我不知道爲什麼不理解這個簡單的程序,忘記回答。
我不想設定時間。當新的對話框bx打開時,顯示進度條,我希望它是不確定的,即經歷一個循環,然後我希望控制回到調用程序並執行一些任務,在此任務結束後,我將關閉進度條窗口。 –
沒有必要設定時間。 在開始實際的任務工作之前,只需使用IProgressMonitor.UNKNOWN參數調用beginTask.run。並且您將使用循環動畫獲取進度監視器。在monitor.done從後臺任務代碼調用後,該動畫將立即停止。 – Serrega
據我瞭解,前兩行是寫在調用程序中。它在parent.getShell()中顯示錯誤。 –