JProgressbar wird nicht aktualisert, trotz Threads

Status
Nicht offen für weitere Antworten.

babuschka

Top Contributor
Hallöchen,

ich habe da ein kleines Problem. Ich habe meine Gui mit Netbeans erstellt und dort auch eine JProgressbar eingebaut. Die Klasse Gui baut die gesamte Obergläche zusammen.
In meiner Klasse Gui_action (extends Gui) habe ich eine reihe von Actionlisterner für Button implementiert.
Und bei dem Button CONVERT wird eine XML-Datei per SAX geparst. Nun will ich den Fortschritt des Parsers gerne mit der JProgressbar anzeigen. Das ganze ist auch schon implementiert nur wird JProgressbar nicht aktualisert und auch nicht am ende eines Threads.
Ich weiß nicht mehr weiter... vll kann mir jemand helfen...
hier mein Quellcode:

Gui_action.class:
Code:
      convert.addActionListener(
                new ActionListener() {

                    @Override
                    public void actionPerformed(ActionEvent e) {

                        new Thread(new Runnable() {

                            public void run() {

                                try {

                                    File input = new File(odc.getInputVerzStr());
                                    long length = input.length();
                                    int laengeFile = (int) length / 1000;

                                    System.out.println("Länge der File klein: " + laengeFile);

                                    statusConvertierung.setMaximum(laengeFile);
                                    statusConvertierung.setMinimum(0);

                                    System.out.println("\nIhre Datei ist " + length + " Bytes groß."); //nur zur Kontrolle

                                    new Thread(new Runnable() {

                                        public void run() {
                                            setErfolgreichText("Ihre XML-Datei wird nun validiert.\n");
                                            setProgressValue(100);

                                        }
                                    }).start();

                                    Validate dtd = new Validate();


                                    boolean istValide = dtd.DTDValidate(odc.getInputVerzStr());
                                    statusConvertierung.setValue(400);


                                    final File f = new File(odc.getInputVerzStr());

                                    if (istValide == true) {

                                        setErfolgreichText("Die Validierung war erfolgreich!\n");  //Text in Statusfenster wird geändert
                                        setErfolgreichText("Parser startet!\n");
                                        statusConvertierung.setValue(800);

                                        try {

                                            checkMemory();
                                            ParserXML.parserStarten(f);
                                            statusConvertierung.setValue(1000);


                                            setErfolgreichText("Das Parsen war erfolgreich!\n");
                                            setElementsEnable();


                                        } catch (MyOutofMemoryException ex) {
                                            setErfolgreichText("Das Parsen war nicht erfolgreich!\n");

...
                });

ParserXML.class:
Code:
public class ParserXML extends DefaultHandler {

      ...Variablen

      ...Methoden

 @Override
    public void startElement(String namespaceURI, String localName,
            String qName, Attributes atts) throws SAXException {

        if (m_tagCount % 1000 == 0) {

            System.out.println(m_tagCount / 1000);
            de.LarsHaeuser.Gui.Gui.setProgressValue((m_tagCount / 1000 * 28));
            de.LarsHaeuser.Gui.Gui.statusConvertierung.setStringPainted(true);

            System.out.println("mom stand: " + de.LarsHaeuser.Gui.Gui.statusConvertierung.getValue());  //zur Konrtrolle
        }

        ++m_tagCount;
}

}


Gui.class:
Code:
public class Gui extends JFrame {

...

public static void setProgressValue(final int count) {

        SwingUtilities.invokeLater(new Runnable() {

            public void run() {

                System.out.println("maximum: " + statusConvertierung.getMaximum());
                System.out.println("minimum: " + statusConvertierung.getMinimum());
                System.out.println("current: " + count);

                statusConvertierung.setValue(count);
                System.out.println("progress: " + count);

            }
        });


    }
...
}

Könnt ihr mir weiterhelfen oder sagen an was es liegt, dass die Bar nicht aktualisert wird?

Vielen Dank schon mal im Voraus.
Beste Grüße, Lars
 
B

Beni

Gast
Entweder bin ich blind oder du startest den Thread garnicht?

Edit: ah, ich sehe, zwei Threads. Und vom Äusseren greiffst du direkt auf die GUI zu was eigentlich nicht richtig ist. Hm, ist dieses Maximum der JProgressBar auch hoch genug? Oder gar zu hoch?
 
Zuletzt bearbeitet von einem Moderator:

babuschka

Top Contributor
naja das maximum ist die filesize/1000... in den meisten fällen bewegt es sich zwischen 1500 und 3000. ist das schon zu hoch?
 

Zed

Bekanntes Mitglied
Ich hab den Code nur überflogen. Aber ich Tip drauf das du einen Thread zu wenig hast wenn sich die Progessbar nicht aktuallisiert. 1 Thread für die Processbar und 1 Thread für die Berechnung. Der Event-Dispatcher muss freibleiben um das Gui zu aktuallisieren.

Ich hatte ein ähnliches Problem vor einer Weile:

http://java-forum.org.server659-han.de-nserver.de/showthread.php?t=78885

Edit:
1500 bis 3000 ist sicher nicht zu viel
 
S

SlaterB

Gast
was ist denn nun mit dem äußeren Thread, der direkt zu Beginn des ActionListeners definiert wird,
wird der mit start() oder mit run gestartet?

weniger ist meist mehr,
baue eine einfache
for int bis 10 Schleife mit Thread.sleep(1000) + JProgressBar-Aktualisierung,
funktioniert das?

-> vollständiges Programm posten
 
S

SlaterB

Gast
na in den äußeren Thread anstelle deiner zig bis hunderten Zeilen zur Dateiverarbeitung,
für die JProgressBar sollte es egal sein, ob der Thread schläft oder komplizierte Dateien verarbeitet

und hier fürs Forum macht es den Unterschied zwischen einem leicht zu postenen/ leicht zu testenden Programm in dem jeder Standard-Fehler in 5 Min gefunden werden kann
und tagelangem Rumraten ohne Erkenntnisse

->
immer vollständige kleine Testprogramme posten
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Swing JProgressBar in JDialog wird nicht angezeigt AWT, Swing, JavaFX & SWT 6
L JProgressBar wird nicht mehr aktualisiert AWT, Swing, JavaFX & SWT 2
S (Applets) JProgressBar wird erst am Ende angezeigt AWT, Swing, JavaFX & SWT 13
J Rekursive Methode JProgressBar AWT, Swing, JavaFX & SWT 4
T JProgressbar während actionListener updaten AWT, Swing, JavaFX & SWT 1
M Swing JProgressbar und Outoputstream probleme AWT, Swing, JavaFX & SWT 2
A Swing JProgressbar im Windows Look & Feel Farbanpassung AWT, Swing, JavaFX & SWT 2
G JProgressBar: Verständnis Problem AWT, Swing, JavaFX & SWT 3
S Swing JProgressBar läuft nicht mit AWT, Swing, JavaFX & SWT 12
T Swing JProgressBar mit String unschön AWT, Swing, JavaFX & SWT 5
H jprogressbar während datenabfrage anzeigen AWT, Swing, JavaFX & SWT 5
P Problem Thread.sleep() und JProgressBar AWT, Swing, JavaFX & SWT 7
E Swing JProgressBar updaten AWT, Swing, JavaFX & SWT 3
D Swing JProgressBar soll ende erkennen AWT, Swing, JavaFX & SWT 4
V Swing JProgressBar aktualisieren AWT, Swing, JavaFX & SWT 14
M JProgressBar updatet nicht AWT, Swing, JavaFX & SWT 4
T Swing JProgressBar Indeterminate bleibt stehen bei neuem Fenster AWT, Swing, JavaFX & SWT 6
A JProgressBar updaten abhängig vom Output eines externen Skripts AWT, Swing, JavaFX & SWT 2
M JProgressBar für einen Thread AWT, Swing, JavaFX & SWT 14
J JProgressBar Indeterminate AWT, Swing, JavaFX & SWT 17
J JProgressBar Farbverlauf AWT, Swing, JavaFX & SWT 2
O Probleme mit JProgressBar bei der Statusanzeige AWT, Swing, JavaFX & SWT 5
S jProgressbar von einem Download AWT, Swing, JavaFX & SWT 6
S Swing StatusLeiste mit JProgressBar AWT, Swing, JavaFX & SWT 4
S JProgressBar in Abhängigkeit eines FileInputStreams AWT, Swing, JavaFX & SWT 2
S Problem mit JProgressBar AWT, Swing, JavaFX & SWT 3
E Swing DB Zugriff mit JProgressBar?! AWT, Swing, JavaFX & SWT 8
C Swing JProgressBar Aktualisiert sich nicht. AWT, Swing, JavaFX & SWT 9
M JProgressBar Look and Feel AWT, Swing, JavaFX & SWT 5
C JProgressBar und JLabel AWT, Swing, JavaFX & SWT 5
K JProgressBar transparent AWT, Swing, JavaFX & SWT 10
M JProgressBar AWT, Swing, JavaFX & SWT 2
K JProgressBar für Serialisierung AWT, Swing, JavaFX & SWT 6
multiholle [JProgressBar] Raster deaktivieren AWT, Swing, JavaFX & SWT 14
M JProgressBar übereinander legen? AWT, Swing, JavaFX & SWT 3
G JProgressBar actionPerformedMethode und SwingUI thread AWT, Swing, JavaFX & SWT 36
S JProgressBar und Threads AWT, Swing, JavaFX & SWT 11
G Repaint bei JProgressBar AWT, Swing, JavaFX & SWT 3
A Richtiger Umgang mit jProgressBar AWT, Swing, JavaFX & SWT 2
H JProgressBar in TableColumn von JTable setzen/abfragen AWT, Swing, JavaFX & SWT 5
B JProgressBar: wie muss ich das lösen? AWT, Swing, JavaFX & SWT 4
R JProgressBar-Verhalten AWT, Swing, JavaFX & SWT 5
G JProgressbar AWT, Swing, JavaFX & SWT 8
A JProgressBar: Farbe im Windows Look&Feel ändern. AWT, Swing, JavaFX & SWT 1
C JProgressBar und ihre Tücken AWT, Swing, JavaFX & SWT 8
G JProgressBar in JTable AWT, Swing, JavaFX & SWT 6
G Probleme mit JProgressbar auf JPanel in JFrame AWT, Swing, JavaFX & SWT 6
F JProgressBar und NullPointerException AWT, Swing, JavaFX & SWT 4
T JProgressBar und CMP Bean AWT, Swing, JavaFX & SWT 2
J JProgressBar flackert AWT, Swing, JavaFX & SWT 14
S JProgressBar zu JOptionPane hinzufügen. AWT, Swing, JavaFX & SWT 8
M Swinganwendung Threads mit JProgressBar AWT, Swing, JavaFX & SWT 7
L JProgressbar möglichst genau AWT, Swing, JavaFX & SWT 3
G JProgressBar + Thread + Client AWT, Swing, JavaFX & SWT 10
R JProgressBar ohne Threads verwenden AWT, Swing, JavaFX & SWT 6
I JProgressBar String anzeigen, danach wieder normale Ansicht AWT, Swing, JavaFX & SWT 3
G JProgressBar AWT, Swing, JavaFX & SWT 8
U JProgressBar in umgekehrter Richtung AWT, Swing, JavaFX & SWT 2
S JProgressBar einbinden AWT, Swing, JavaFX & SWT 5
H JProgressBar AWT, Swing, JavaFX & SWT 6
T JProgressBar und JPG AWT, Swing, JavaFX & SWT 2
D Problem mit JProgressBar und Threads AWT, Swing, JavaFX & SWT 7
P Methode wird nicht überprüft AWT, Swing, JavaFX & SWT 4
P paintComponent-Methode wird dauernd neu aufgerufen AWT, Swing, JavaFX & SWT 2
G JavaFX LineChart Datenpunkte Markierung wird abgeschnitten AWT, Swing, JavaFX & SWT 1
P JTextField wird nur sehr klein angezeigt und verändert die Größe nicht AWT, Swing, JavaFX & SWT 3
Telisti Javafx Image wird nicht richtig integiert AWT, Swing, JavaFX & SWT 8
J Netbeans die JavaFX-Anwendung wird nicht ausgeführt AWT, Swing, JavaFX & SWT 16
N €-Zeichen wird nicht akzeptiert AWT, Swing, JavaFX & SWT 4
G Problem mit der Anzeige von jLabel. Unlesbar wenn der Text geändert wird. AWT, Swing, JavaFX & SWT 28
berserkerdq2 Wie füge ich ein Bild in javafx mit dem Scenebuilder ein, das automatisch mitgezogen wird, wenn das Fenster vergrößert wird oder Vollbildmodus AWT, Swing, JavaFX & SWT 6
L jComboBox Actionlistener wird beim erstmaligen Befüllen getriggert AWT, Swing, JavaFX & SWT 7
_user_q Objekt.setSelected(false), wenn es nicht mehr fokussiert wird AWT, Swing, JavaFX & SWT 2
S Javafx getResource-Pfad wird nicht erkannt AWT, Swing, JavaFX & SWT 7
U Warum wird zweimal die Affinetransformation estellt (2Dgraphics, Java)? AWT, Swing, JavaFX & SWT 31
DonBronson Gezeichnetes Objekt verschwindet nachdem erneut gezeichnet wird AWT, Swing, JavaFX & SWT 8
ProggersWorld JavaFX TextArea BackgroundImage wird nicht angezeigt AWT, Swing, JavaFX & SWT 3
M Bild wird nicht geladen obwohl sie gefunden wird AWT, Swing, JavaFX & SWT 0
M Nach Export als Runnable Jar wird css nicht merh gefunden AWT, Swing, JavaFX & SWT 22
izoards Outlook Mail erstellen - Signatur wird nicht angezeigt. AWT, Swing, JavaFX & SWT 3
J actionperformed wird nicht aufgerufen/ repaint() AWT, Swing, JavaFX & SWT 6
J Swing Komponente wird unpassend angepasst in der Größe AWT, Swing, JavaFX & SWT 35
J Java FX NullPointerException, ObservableList wird in View nicht angezeigt.. AWT, Swing, JavaFX & SWT 34
S Next_Button wird nicht ausgeführt. AWT, Swing, JavaFX & SWT 6
FrittenFritze Ein Problem mit der CSSBox, die Größe wird nicht angepasst AWT, Swing, JavaFX & SWT 5
CptK windowClosed() nur aufrufen, wenn Fenster nicht über Button geschlossen wird AWT, Swing, JavaFX & SWT 1
J Komponente wird manchmal falsch gezeichnet AWT, Swing, JavaFX & SWT 0
J Swing JList wird nicht angezeigt AWT, Swing, JavaFX & SWT 6
JMölleri Swing Image wird unscharf dargestellt AWT, Swing, JavaFX & SWT 2
JojoSand Java Programm wird nicht gestartet - keinen Fehlerhinweis AWT, Swing, JavaFX & SWT 9
R Text vom Jlabel wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
D JavaFX Bearbeitetes Bild wird nicht gespeichert AWT, Swing, JavaFX & SWT 9
J setOnCloseRequest wird nicht ausgelöst AWT, Swing, JavaFX & SWT 3
P JavaFX Fenster wird nicht angezeigt (Mac) AWT, Swing, JavaFX & SWT 13
B JavaFX Bei Scenen-Wechsel im primaryStage wird aktuelle Fenstergröße nicht mit übernommen AWT, Swing, JavaFX & SWT 16
B JavaFX Warum wird hier eine NullPointer-Exception geworfen? AWT, Swing, JavaFX & SWT 7
M JavaFX javaFX Label-Text wird nicht gesetzt AWT, Swing, JavaFX & SWT 3
O Swing "Eigenes" JPanel wird dem JScrollPane nicht hinzugefügt AWT, Swing, JavaFX & SWT 5
L Swing JLabel wird beim ändern der Schriftart immer neu gezeichnet. AWT, Swing, JavaFX & SWT 2
R Layout Manager null und Component wird nicht hinzugefügt AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben