Starten des Programms mit dem Progressbar

tanechka

Bekanntes Mitglied
Hallo zusammen,

ich habe folgendes Problem...beim Starten des Programms führe ich einige Konfigurationen durch. Dafür habe ich ein GUI mit dem Progressbar, das dem Benutzer den Fortschritt anzeigt:
Code:
package main_gui.gui;
import org.eclipse.core.databinding.observable.Realm;
import org.eclipse.jface.databinding.swt.SWTObservables;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Monitor;
import org.eclipse.swt.widgets.ProgressBar;
import org.eclipse.swt.widgets.Shell;
import main.StartThread;



public class StartProgram {

    private static Display display;
    protected Shell shell;



    public static void main(String args[]) {
        display = Display.getDefault();

        Realm.runWithDefault(SWTObservables.getRealm(display), new Runnable() {
            public void run() {
                try {
                    StartProgram window = new StartProgram();
                    window.open();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }


    protected void createContents() {
        shell = new Shell(display, SWT.TITLE | SWT.PRIMARY_MODAL);
        shell.setSize(491, 197);
        Label status = new Label(shell, SWT.NULL);
        status.setAlignment(SWT.CENTER);
        status.setBounds(38, 77, 399, 71);
        /** take the primary monitor */
        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);

        ProgressBar progressBar = new ProgressBar(shell, SWT.NONE);
        progressBar.setMaximum(0);
        progressBar.setBounds(38, 49, 399, 17);

        new StartThread(shell, display, progressBar, status).start();
    }


    public void open() {
        createContents();
        shell.open();
        shell.layout();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch()) {
                display.sleep();
            }
        }
    }
}

StartThread ist bei mir der Thread, der den Fortschritt des Progressbars steuert und Konfigurationen ausführt.

Code:
package main;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.ProgressBar;
import org.eclipse.swt.widgets.Shell;
import main_gui.gui.MainGui;
import processlistener.ProcessListener.Processes;

public class StartThread extends Thread {
 private Shell shell;
 private Display display;
 private ProgressBar progressBar;
 private Label labelInfo;
 
 public StartThread(Shell shell, Display display, ProgressBar progressBar,
   Label labelInfo) {
  this.shell = shell;
  this.display = display;
  this.progressBar = progressBar;
  this.labelInfo = labelInfo;
 }

    @Override
    public void run() {
        if (display.isDisposed()) {
            return;
        }
        try {
        System.out.println("Konfiguration");
          Thread.sleep(500);
        } catch (Exception e) {
            System.out.println(e);
        }
    }
 /**
  *
  * @param statusText
  */
 private void setFehler(String fehler) {
  display.asyncExec(new Runnable() {
   @Override
   public void run() {
    labelInfo.setText(fehler);
   }
  });
 }
 /**
  *
  */
 private void closeProgressGUI() {
  display.asyncExec(new Runnable() {
   @Override
   public void run() {
    shell.close();
   }
  });
 }
 /**
  *
  */
 private void startMainGUI() {
  display.asyncExec(new Runnable() {
   @Override
   public void run() {
    MainGui main = new MainGui();
    main.open();
//    shell.dispose();
   }
  });
 }
}

Mein Progressbar funktioniert gut, der Statustext wird auch angezeigt.
Wenn der Progressbar auf 100 % ist, möchte ich die GUI mit dem Progressbar schließen und eine MainGui starten. Mein Problem ist das zu implementieren, habt ihr vielleicht Vorschläge?

Vielen Dank
 

tanechka

Bekanntes Mitglied
Ich habe an so eine Lösung gedacht. So eine Klasse zu erstellen:
Code:
public class ThreadTest {
public static void main(String[] args) {   

    StartThread mythread = new StartThread();

    MainThread mainGui=new MainThread();
    mythread.run();
    mainGui.run();
  }
}
In der Main wurde erstmal der Progressbar-Thread aufgerufen und wenn das fertig ist, würde der MainThread-Aufruf passieren. Meine Lösung funktioniert leider nicht.
Ich bitte um Hilfe!
 

lam_tr

Top Contributor
Warum machst du nicht einfach so, dass der erste Thread mit dem Progressbar durchlaufen lassen, dann die Progressbar von Shell (oder auch alle Controls) entfernen und dann die UI vom MainThread in die Shell hinzufügen?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Juelin starten maven javafx programm ohne netbeans AWT, Swing, JavaFX & SWT 38
A JavaFX exportierte Jar ohne beim starten die Libs hinzufügen? AWT, Swing, JavaFX & SWT 2
Jose05 JavaFx Fxml: GUI aus einer anderen Klasse starten AWT, Swing, JavaFX & SWT 1
M Wieso verändert sich die Framerate nach erneutem Starten des AnimationTimer? AWT, Swing, JavaFX & SWT 18
G Thread starten Swing AWT, Swing, JavaFX & SWT 5
L JavaFX OpenJFX im Debug Mode starten AWT, Swing, JavaFX & SWT 8
L JavaFX JavaFX Forms mit Groovy starten AWT, Swing, JavaFX & SWT 1
P Gui lässt sich nicht starten AWT, Swing, JavaFX & SWT 10
J Thread per Button starten AWT, Swing, JavaFX & SWT 10
D Frame beim starten eines anderen Frames schließen AWT, Swing, JavaFX & SWT 2
E JavaFX Stage.show() in ursprünglichem Thread starten AWT, Swing, JavaFX & SWT 7
P Programm durch Dateiaufruf starten und Datei öffnen AWT, Swing, JavaFX & SWT 2
D Textfield bei starten füllen. AWT, Swing, JavaFX & SWT 5
C Im ActionListener Buttons disablen, einen Thread starten, dann Buttons enablen AWT, Swing, JavaFX & SWT 2
A Zufallsgenerator starten bei Klick auf Radiobutton AWT, Swing, JavaFX & SWT 3
X Swing Ein neues Fenster öffen aber ohne ein extra Prozess zu starten AWT, Swing, JavaFX & SWT 1
C Thread in Klassen starten AWT, Swing, JavaFX & SWT 4
C Methode über Buttonklick starten AWT, Swing, JavaFX & SWT 8
S jLabel / jText beim starten ausblenden AWT, Swing, JavaFX & SWT 2
S Jframe aus JDialog starten AWT, Swing, JavaFX & SWT 4
J SWING - Programm ohne Eclipse etc. starten AWT, Swing, JavaFX & SWT 7
A JFrame im JFrame starten AWT, Swing, JavaFX & SWT 4
P Eigene CMD GUI zum Starten von JAR AWT, Swing, JavaFX & SWT 10
C drawString wird beim starten des Programmes nicht ausgeführt AWT, Swing, JavaFX & SWT 3
A Gui Starten AWT, Swing, JavaFX & SWT 3
S Java GUI Anwendung ohne Konsole starten AWT, Swing, JavaFX & SWT 6
M Swing JFrame aus anderer Klasse starten/anzeigen AWT, Swing, JavaFX & SWT 2
A Applet Applet aus Code neu starten AWT, Swing, JavaFX & SWT 2
S Applet starten AWT, Swing, JavaFX & SWT 4
T Programm vom Desktop starten! AWT, Swing, JavaFX & SWT 2
V Applet Applet starten schlägt fehl AWT, Swing, JavaFX & SWT 2
J Spieleprogramm als "richtiges" Spiel starten AWT, Swing, JavaFX & SWT 19
F Applet Applet starten...(+Timer?) AWT, Swing, JavaFX & SWT 12
M Swing Eine andere Klasse über Button starten und in TextArea ausgeben AWT, Swing, JavaFX & SWT 13
J Aus ActionPerformed ein Plugin starten AWT, Swing, JavaFX & SWT 4
D Firefox aus Programm starten AWT, Swing, JavaFX & SWT 4
O JPanel aus Applet starten AWT, Swing, JavaFX & SWT 3
M Ecipse Wizard starten AWT, Swing, JavaFX & SWT 6
capgeti Wie Programm in JPanel (o.ä.) starten? AWT, Swing, JavaFX & SWT 3
Q mit button starten AWT, Swing, JavaFX & SWT 4
T Frame in Main Starten AWT, Swing, JavaFX & SWT 5
T Anwendung starten AWT, Swing, JavaFX & SWT 5
R Applet aus JFrame starten AWT, Swing, JavaFX & SWT 2
E NoClassDefFoundError beim Starten einer Shell AWT, Swing, JavaFX & SWT 3
E Starten meiner GUI, aber wie? AWT, Swing, JavaFX & SWT 7
K Instanz von JEditorPane starten AWT, Swing, JavaFX & SWT 3
D Beim Starten ein JTextfield Focus geben AWT, Swing, JavaFX & SWT 7
X Externe Anwendungen in JInternalframe starten. AWT, Swing, JavaFX & SWT 5
S Starten von verschiedenen JFrames AWT, Swing, JavaFX & SWT 11
T Prozesse starten wenn JDialog erscheint AWT, Swing, JavaFX & SWT 2
G Seltsames Phänomen beim starten meiner Applikation AWT, Swing, JavaFX & SWT 8
W Externe Programme in JFrame starten AWT, Swing, JavaFX & SWT 4
M Kann JAR nicht starten AWT, Swing, JavaFX & SWT 6
O Anwendung aus dem Programm heraus neu starten AWT, Swing, JavaFX & SWT 2
D Standard Email Client starten AWT, Swing, JavaFX & SWT 8
S Fenster soll im Zentrum starten. AWT, Swing, JavaFX & SWT 2
A Java Application mit Batch starten? AWT, Swing, JavaFX & SWT 9
N Animation nach einem bestimmten Ereignis starten lassen? AWT, Swing, JavaFX & SWT 4
V SWT Programm als jar-File starten AWT, Swing, JavaFX & SWT 5
M Programme in JFrame starten AWT, Swing, JavaFX & SWT 9
L Weiss nicht ob es hier her gehört - GUI ohne Konsole starten AWT, Swing, JavaFX & SWT 10
K JavaFX Allgemeine Fragen zu dem Aufbau eines Programms hinsichtlich der Klassen AWT, Swing, JavaFX & SWT 1
I JavaFX Speichern der eingefügten Einträge beim Neustart des Programms AWT, Swing, JavaFX & SWT 2
J Anfänger GUI Problem bei der Ausführung eines sehr einfachen Programms AWT, Swing, JavaFX & SWT 2
M Anzeige updatet sich erst am Ende des Programms AWT, Swing, JavaFX & SWT 3
D Swing Frage zum aufbau eines Programms AWT, Swing, JavaFX & SWT 24
F dynamische Ausgabe eines extenen Programms umleiten AWT, Swing, JavaFX & SWT 6
O Zeichnene auf ein Jpanel während der Laufzeit des Programms AWT, Swing, JavaFX & SWT 2
F Progressbar Farbe AWT, Swing, JavaFX & SWT 6
T Swing Reload JPanel + darin liegende ProgressBar AWT, Swing, JavaFX & SWT 9
A Swing ProgressBar über 2 parallel laufende Threads AWT, Swing, JavaFX & SWT 2
P JavaFx - Progressbar - Füllen mittels mehreren Tasks AWT, Swing, JavaFX & SWT 0
Bluedaishi JavaFX ProgressBar AWT, Swing, JavaFX & SWT 10
L Progressbar Laufzeitveränderung AWT, Swing, JavaFX & SWT 4
1 Swing Progressbar benutzen um Fortschritt einer Methode anzuzeigen AWT, Swing, JavaFX & SWT 4
B JavaFX Textfields: Fortschritt als ProgressBar und Progressindicator AWT, Swing, JavaFX & SWT 5
MR._FIRE_Flower progressBar in ein bestehendes Programm einbauen AWT, Swing, JavaFX & SWT 3
M Wie binde ich eine JavaFX ProgressBar an eine Datei Übertragung? AWT, Swing, JavaFX & SWT 2
Z Swing Swing und die Progressbar AWT, Swing, JavaFX & SWT 1
I JavaFX Im Controller die ProgressBar mit Task updaten AWT, Swing, JavaFX & SWT 6
R LookAndFeel Wie kann man die Textfarbe der Nimbus ProgressBar nach Füllstand ändern? AWT, Swing, JavaFX & SWT 2
M JavaFX Progressbar bar und track Komponente zur Laufzeit ändern AWT, Swing, JavaFX & SWT 2
Z ProgressBar in Eclipse mit Wizard page? AWT, Swing, JavaFX & SWT 1
W Swing ProgressBar update AWT, Swing, JavaFX & SWT 4
A JavaFX Eine Task mit einer ProgressBar verbinden AWT, Swing, JavaFX & SWT 0
H Nimbus ProgressBar Colors AWT, Swing, JavaFX & SWT 9
P Swing Die ProgressBar wird nicht angezeigt AWT, Swing, JavaFX & SWT 5
B SWT Progressbar mit Textoverlay? AWT, Swing, JavaFX & SWT 3
M ProgressBar in ActionListener AWT, Swing, JavaFX & SWT 4
T Prozessstatus in Progressbar anzeigen AWT, Swing, JavaFX & SWT 5
J Swing Progressbar aktualisiert sich nicht AWT, Swing, JavaFX & SWT 17
V Persistentes Objekt laden Progressbar AWT, Swing, JavaFX & SWT 7
V Swing Progressbar Problem AWT, Swing, JavaFX & SWT 14
B ProgressBar während Berechnung AWT, Swing, JavaFX & SWT 4
Tobse LookAndFeel [Windows7] Nativ aussehnde ProgressBar AWT, Swing, JavaFX & SWT 13
J Progressbar mit einfacher Funktion AWT, Swing, JavaFX & SWT 6
D Progressbar AWT, Swing, JavaFX & SWT 5
H Zeile in DefaultTableModel hinzufügen, ProgressBar AWT, Swing, JavaFX & SWT 4
S Upload Progressbar AWT, Swing, JavaFX & SWT 3
S Dateien kopieren mit ProgressBar AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen


Oben