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:
ParserXML.class:
Gui.class:
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
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