ウィンドウビルダーを使用してJavaアプリケーションのインターフェースを設計しています。私がしなければならないことは.. ボタンをクリックすると、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() が呼び出されます。この単純なプログラムを理解していない理由がわかりません。答えるのを忘れてください。