Bekomme Thread nicht gleichzeitig gestartet.

sylo

Bekanntes Mitglied
HI zusammen

habe folgendes Problem. Ich lese eine XML-Datei ein und schreibe sie zeilenweise in eine Textarea.

Java:
row = bf.readLine();
	while (row != null) {
	textArea.setText(textArea.getText() + row + "\n");
	row = bf.readLine();
während dies passiert will ich, dass ein JProgressBar erscheint, der mir die Wartezeit versüsst :)
Die ganze Action startet mittels eines Buttons.
Java:
public void actionPerformed(ActionEvent e) {
				frameProgressBar.setVisible(true);
				thread = new Thread(new thread1());
				
				thread.start();
				
				guiElements.openTextMode();
				progressBar.setIndeterminate(false);
			}
In der Methode openTextMode() wird die oben genannte Schleife durchlaufen. Die Klasse thread1 sieht so aus.

Java:
public class thread1 implements Runnable {
		public void run() {
			
		}
	}

Die Methode run() ist aus dem Grund leer, weil ich nur den Balken von links nach rechts und zurück bewegen lassen will, und wenn die Methode openTextMode() fertig ist soll die Progressbar wieder aufhören.

Mit der Klasse SwingWorker soll es wohl einfach funktionieren, ich benutze aber Java 1.5, da ist es noch nicht enthalten.

Schon mal Dank für eure Hilfen.

Grüße
sylo
 
G

Gast2

Gast
Dein Thread ist leer, er wird also direkt nach dem Start wieder beendet weil er durchgelaufen ist.

Außerdem führst du deine "lange schleife" auf dem EDT aus, diese Schleife solltest du in nen extra thread auslagern damit du deinen EDT nicht blockierst.
 

sylo

Bekanntes Mitglied
Soll ich den Thread dann künstlich füllen? Ich weis zu dem Zeitpunkt wo ich den/das/die Progressbar starte nicht wie lange es mit dem Befüllen der Textarea dauern wird.

Außerdem führst du deine "lange schleife" auf dem EDT aus, diese Schleife solltest du in nen extra thread auslagern damit du deinen EDT nicht blockierst.
Du meinst die Methode openTextMode()?

Grüße
sylo
 
G

Gast2

Gast
sylo hat gesagt.:
Mit der Klasse SwingWorker soll es wohl einfach funktionieren, ich benutze aber Java 1.5, da ist es noch nicht enthalten.
:D

sylo hat gesagt.:
Du meinst die Methode openTextMode()?
Genau.
Die gesamte Schleife muss in nem extra Thread laufen. Sobald der Thread dann fertig ist kannst du die progressbar wieder verschwinden lassen.
 

sylo

Bekanntes Mitglied
Habe es gerade ausprobiert. Funktioniert einwandfrei. Danke an euch beide.:applaus::applaus:


Grüße
sylo
 

sylo

Bekanntes Mitglied
Klar kann ich machen. Sieht jetzt aber etwas anderster aus, da ich doch die Prozentangabe haben wollte.

Also ich hab die Methode openTextMode()

Java:
public void openTextMode() {
		Thread thread1 = new Thread(new Runnable() {

			public void run() {
			......
//		 Hier ist mein sämtlicher Code der Methode. Unteranderem dann auch
		JLabel statusLabel = new JLabel("XML File is opened");
		JFrame frameProgressBar = new JFrame();
		frameProgressBar.setLocationRelativeTo(frame);
		JProgressBar progressBar = new JProgressBar(0, lines);
		progressBar.setStringPainted(true);
		frameProgressBar.getContentPane().add(progressBar, BorderLayout.CENTER);
		frameProgressBar.getContentPane().add(statusLabel, BorderLayout.SOUTH);

		frameProgressBar.setSize(300, 100);
		frameProgressBar.setVisible(true);

		try {
			row = bf.readLine();
			int i = 0;
			while (row != null) {
				textArea.setText(textArea.getText() + row + "\n");
				row = bf.readLine();
				progressBar.setValue(i);
				i++;
			}
			frameProgressBar.setVisible(false);
			} catch (IOException e) {
				e.printStackTrace();
			}

			..........
			}
		}
//		Und dann noch ausserhalb des Thread

		thread1.start();
}

Also brauche ich nicht zusätzlich zwei Threads zu öffnen, sondern es reicht wenn man zusätzlich zum EDT noch einen aufmacht.

Hoffe es ist verständlich.

Grüße
sylo
 
G

Gelöschtes Mitglied 5909

Gast
wenn mich nicht alles täuscht (bin kein GUI Exptere) solltest du aber folgende beiden sachen IM EDT machen:
Java:
                textArea.setText(textArea.getText() + row + "\n");
                progressBar.setValue(i);

-->

Java:
SwingUtilities.invokeLater(new Runnable() {
    public void run() {
       textArea.setText(textArea.getText() + row + "\n");
       progressBar.setValue(i);

    }
});
 

sylo

Bekanntes Mitglied
mmmhhh. Ich wüsste nicht warum. Die Zeile
Java:
progressBar.setValue(i);
muss doch in der Schleife bleiben, damit der Wert jedesmal gesetzt werden kann, oder?
 
G

Gast2

Gast
es stimmt aber schon, aktionen die GUI Komponenten verändern sollten im EDT ausgeführt werden, sonst kann es unter umständen zu komischen fehlern kommen (muss aber nicht).
Die Zeile kann aber trotzdem noch in der Schleife bleiben:

Java:
        while (row != null) {
            row = bf.readLine();
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    textArea.setText(textArea.getText() + row + "\n");
                    progressBar.setValue(i);
                }
            });
            i++;
        }
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
El_Lobo Threads bekomme Thread nicht abgewürgt mit interrupted() Java Basics - Anfänger-Themen 3
8 Wie bekomme ich einen Thread angehalten der blokiert ist? Java Basics - Anfänger-Themen 8
X wie bekomme ich durch Eingabeaufforderung definierte double in einen Befehl, welcher 3 erwartete double braucht? Java Basics - Anfänger-Themen 3
DrahtEck Warum bekomme ich ein "minus" ausgegeben Java Basics - Anfänger-Themen 2
A Eclipse IDE - Wie bekomme ich eine ältere Version Java Basics - Anfänger-Themen 6
Temsky34 Wie bekomme ich dieses Java-Warning wieder weg? Java Basics - Anfänger-Themen 2
EchtKeineAhnungManchmal Hallo :) ich bekomme es nicht hin eine Fehlermeldung auszugeben über die GUI Java Basics - Anfänger-Themen 3
I DecimalFormat in Zahlenformat für Währung, habe 7,99, bekomme aber 7 Java Basics - Anfänger-Themen 4
I Format Problem mit Wert - bekomme 0,10 anstatt 10,00 Java Basics - Anfänger-Themen 6
M Was muss ich verändern damit ich es so ausgegeben bekomme wie auf dem Foto? Java Basics - Anfänger-Themen 2
A Wieso bekomme ich hier zwei unterschiedliche Ausgaben? Java Basics - Anfänger-Themen 6
B Warum bekomme ich kein Bild. Java Basics - Anfänger-Themen 10
L Wie vergrößere ich ein Rechteck in alle Richtungen um eins und bekomme dessen Rand? Java Basics - Anfänger-Themen 2
B EJB und Arquillian - bekomme Nullpointer Exception beim Aufruf der EJB Klasse Java Basics - Anfänger-Themen 40
Henri run und bekomme ich nichts Java Basics - Anfänger-Themen 12
D OOP Warum bekomme ich eine Null-Pointer Exception!!? :( Java Basics - Anfänger-Themen 4
A Wie bekomme ich zwei Strings in eine ArrayList Java Basics - Anfänger-Themen 4
U Wie bekomme ich bei der Ausgabe das erste Komma weg Java Basics - Anfänger-Themen 8
I ZIP Archive erstellen - ich möchte aber nur den jeweiligen Ordner zippen, bekomme ganzen Pfad Java Basics - Anfänger-Themen 1
Thallius Wie bekomme ich den Country code Java Basics - Anfänger-Themen 4
T Klassen wie funktionieren Streams, warum bekomme ich int zurück? Java Basics - Anfänger-Themen 2
D Wie bekomme ich meine Ausgabe in Form von "2^x" hin? Java Basics - Anfänger-Themen 1
G Wie bekomme ich alle Ausgaben von runTime.exec() Java Basics - Anfänger-Themen 7
J Compiler-Fehler Warum bekomme ich fehler angezeigt?? Java Basics - Anfänger-Themen 3
G Variablen Warum bekomme ich da eine Fehlermeldung? Java Basics - Anfänger-Themen 3
X Ich bekomme die Java Communications Api nicht installiert Java Basics - Anfänger-Themen 9
S Bei double Methode bekomme ich Infinity Java Basics - Anfänger-Themen 2
P Bekomme in meinen JPanel nur eine JComponente angezeigt Java Basics - Anfänger-Themen 7
W wie bekomme ich die .class Dateien ausgelesen Java Basics - Anfänger-Themen 11
N Reguläre Ausdrücke - bekomme Suchkriterium nicht hin Java Basics - Anfänger-Themen 3
radiac Wieso bekomme ich kein Bild drauf??? Java Basics - Anfänger-Themen 13
S regular expression - bekomme leerzeichen nicht raus Java Basics - Anfänger-Themen 3
T Mehr Anfänger geht nicht - Wie bekomme ich das zum laufen! Java Basics - Anfänger-Themen 6
G Woher bekomme ich passende .jar-Archive Java Basics - Anfänger-Themen 8
D Bekomme das nicht hin (set / get Methoden) Java Basics - Anfänger-Themen 22
F Wie bekomme ich mein "Fenster"? Java Basics - Anfänger-Themen 3
A Eine Javaaufgabe die ich nicht auf die Reihe bekomme. Java Basics - Anfänger-Themen 7
D bekomme Bild nicht eingefügt Java Basics - Anfänger-Themen 6
S Warum bekomme ich diese Exception ? Java Basics - Anfänger-Themen 3
J bekomme keine ausgabe! Java Basics - Anfänger-Themen 40
P wie bekomme ich ein array in eine string variable Java Basics - Anfänger-Themen 11
S Bekomme Keine Ausgabe Java Basics - Anfänger-Themen 9
T Bekomme es nicht hin Java Basics - Anfänger-Themen 10
T Bekomme Fehler mit Bubblesort Java Basics - Anfänger-Themen 2
E Wo bekomme ich das javax.swing.* package her? Java Basics - Anfänger-Themen 3
M Bekomme Programm nicht zum laufen HILFEEEE! Java Basics - Anfänger-Themen 28
L Bekomme ständig eine ArrayOutBoundsException Java Basics - Anfänger-Themen 4
G wie bekomme ich das javax.jws.* package in den JBuilder ? Java Basics - Anfänger-Themen 7
R Woher bekomme ich das aktuelle Jahr oder auch Datum? Java Basics - Anfänger-Themen 4
E Wie bekomme ich -Xmx512m in JAR-Datei Java Basics - Anfänger-Themen 13
E bekomme was vom Typ Object -> und nu? Java Basics - Anfänger-Themen 6
V Beim lesen aus einer Datei bekomme ich fehlerhafte Strings. Java Basics - Anfänger-Themen 2
H Warum bekomme ich einenen noclassdeffounderror ? [erledigt] Java Basics - Anfänger-Themen 7
P File Object, wie bekomme ich den Datei Typ Java Basics - Anfänger-Themen 6
M Wie bekomme ich einen Bild in einem JPaneln inden background Java Basics - Anfänger-Themen 3
I Wie bekomme ich diesen Fehler weg? Java Basics - Anfänger-Themen 5
megachucky Woher bekomme ich Java (außer aus dem netz) ? Java Basics - Anfänger-Themen 12
G Problem mit JPanel, bekomme keine Anzeige! Java Basics - Anfänger-Themen 4
S Wie bekomme ich absolute Werte (Betrag einer Zahl)? Java Basics - Anfänger-Themen 5
B 4 double Werte sind gegeben - wie bekomme ich den größten? Java Basics - Anfänger-Themen 8
S Bekomme Fehlermeldungen nicht weg ! :-| Java Basics - Anfänger-Themen 5
Leyla Thread isInterrupt Java Basics - Anfänger-Themen 18
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
A Thread XML-Dateien zusammenfügen Java Basics - Anfänger-Themen 11
F influxdb Upload in eigenem Thread Java Basics - Anfänger-Themen 2
frager2345 Thread - Methoden synchronized deklarieren Java Basics - Anfänger-Themen 10
berserkerdq2 Größter unterschied von extends thread und implements runnable? Java Basics - Anfänger-Themen 2
T Thread beenden aus zweiter Klasse Java Basics - Anfänger-Themen 4
A Thread - Synchronized Java Basics - Anfänger-Themen 10
A Thread Producer - Consumer Java Basics - Anfänger-Themen 1
A Thread-Semhapore Java Basics - Anfänger-Themen 0
A Thread Exchanger Java Basics - Anfänger-Themen 22
A Thread-Cyclicbarrier Java Basics - Anfänger-Themen 4
B In einem Thread Endlosschleife beenden Java Basics - Anfänger-Themen 19
A Thread-Verklemmung Java Basics - Anfänger-Themen 10
A Thread-Schreibe-Lese-Problem Java Basics - Anfänger-Themen 4
A Thread find number Java Basics - Anfänger-Themen 8
F Thread.sleep() Java Basics - Anfänger-Themen 5
F Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 11 at main.main(main.java:11) Java Basics - Anfänger-Themen 2
A Thread Java Basics - Anfänger-Themen 3
M Exception in thread "main" java.util.NoSuchElementException Java Basics - Anfänger-Themen 2
A Thread Java Basics - Anfänger-Themen 8
B Compiler-Fehler Fehlermeldung Exception in thread, falsche Eingabewert Java Basics - Anfänger-Themen 2
M Thread-Zustände Java Basics - Anfänger-Themen 6
CptK For-Schleife in Thread nach jedem Durchlauf pausieren Java Basics - Anfänger-Themen 35
S Kriege Fehler "Exception in thread" beim Benutzen von SubStrings. Java Basics - Anfänger-Themen 2
B Endlosschleife Thread sauber beenden Java Basics - Anfänger-Themen 19
D Java Thread wartet nur ein mal Java Basics - Anfänger-Themen 1
D Java Thread wartet nur ein mal Java Basics - Anfänger-Themen 0
O Exception in thread "main" java.lang.ArithmeticException: / by zero Java Basics - Anfänger-Themen 4
C Thread und TimerTask, Verstädnisproblem Java Basics - Anfänger-Themen 10
amgadalghabra Sorting Thread Launcher Java Basics - Anfänger-Themen 3
B Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException Java Basics - Anfänger-Themen 8
A Thread Java Basics - Anfänger-Themen 4
A Thread Java Basics - Anfänger-Themen 1
A Thread Java Basics - Anfänger-Themen 0
R Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 5
S Compiler-Fehler Exception in thread "main" java.lang.Error: Unresolved compilation problem: Java Basics - Anfänger-Themen 6
L Liste in anderem Thread laden Java Basics - Anfänger-Themen 1
B Thread / Prozess stoppen? Java Basics - Anfänger-Themen 22

Ähnliche Java Themen

Neue Themen


Oben