Hallo zusammen,
bei mir läuft der Update vom Progressbox nicht ordentlich.
So ist der bei mir aufgesetzt:
Mein Problem ist, dass der Progressbox nicht kontinuierlich upgedatet wird, während die function1() und funktion2() ausgeführt werden.
Wie könnte ich das so machen, dass während der Ausführungszeit von den Funktionen, der Progressbox automatisch weiterschreitet.
Vielen Dank
bei mir läuft der Update vom Progressbox nicht ordentlich.
So ist der bei mir aufgesetzt:
Code:
public void createProgressBar() {
shell = new Shell(display, SWT.TITLE | SWT.PRIMARY_MODAL);
shell.setSize(491, 300);
Device dev = shell.getDisplay();
setUpStatusBar();
updateProgressBar();
Monitor primary = display.getPrimaryMonitor();
/** get the size of the screen */
Rectangle bounds = primary.getBounds();
/** get the size of the window */
Rectangle rect = shell.getBounds();
/** calculate the centre */
int x = bounds.x + (bounds.width - rect.width) / 2;
int y = bounds.y + (bounds.height - rect.height) / 2;
/** set the new location */
shell.setLocation(x, y);
}
private static void updateGUIInProgress(String statusText, int value, int count) {
setStatus(statusText);
progressBar.setMaximum(count);
progressBar.setSelection(value);
}
private static void setUpStatusBar() {
progressBar = new ProgressBar(shell, SWT.SMOOTH);
progressBar.setMaximum(0);
progressBar.setBounds(65, 46, 354, 17);
status = new Label(shell, SWT.NONE);
status.setBounds(43, 77, 399, 71);
status.setAlignment(SWT.CENTER);
schliessenButton = new Button(shell, SWT.NONE);
schliessenButton.setText("Schließen");
schliessenButton.setVisible(true);
schliessenButton.setBounds(177, 182, 131, 20);
schliessenButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
shell.close();
}
});
}
private void updateProgressBar() {
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
if (!progressBar.isDisposed())
try {
// die erste Funktion
function1();
Thread.sleep(1000);
// die zweite Funktion
function2();
Thread.sleep(1000);
updateGUIInProgress("Es ist durch...", 100, 100);
} catch (Exception e) {
logger.error(e);
}
}
});
}
private void function1() throws Exception {
updateGUIInProgress("function1", 43, 100);
//Die Aufgabe 1
}
private void function2() throws Exception {
updateGUIInProgress("function2", 93, 100);
//Die Aufgabe 2
}
Wie könnte ich das so machen, dass während der Ausführungszeit von den Funktionen, der Progressbox automatisch weiterschreitet.
Vielen Dank