Erste Schritte Label Text vor Methodenaufruf setzen

fetcher

Mitglied
Hallo liebes Forum,
ich habe ein kleines Problem beim setzen eines Textes bevor eine bestimmte Methode aufgerufen wird.

Es handelt sich dabei um ein Status-Text in Form eines JLabels.
Beim Button-Klick müsste ein StatusText gesetzt werden bevor die Methode ("einlesen()") aufgerufen wird. Da der Code ja immer von oben nach unten ausgeführt wird wundert es mich, dass der Text nicht gesetzt wird.

Die Methode einlesen() nimmt ein wenig Zeit in Anspruch, daher sollte auch der Status-Text gesetzt werden. Sobald ich den Methodenaufruf auskommentiere, setzt er den Text wieder ganz normal.

Hat jemand eine Idee?

Vielen Dank,
Gruß
fetcher
 

fetcher

Mitglied
Hi Gucky,
hier der Code:

Java:
JButton btnGet = new JButton("GET");
	    btnGet.addActionListener(new ActionListener() 
	    {
	    	public void actionPerformed(ActionEvent e) 
	    	{
	    		
	    		lblStatusAnzeige.setText("Bücher werden eingelesen...");
	    		
    			einlesenFirst();
	    		
	    		DefaultTableModel modelNeu = getTableAll();
				
				table.setModel(modelNeu);
				table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
				table.getColumn("Name").setPreferredWidth(590);
				
				//lblAnzTreffer.setText(""+anzahlTreffer);
				lblAnzahl.setText("" + NumberFormat.getInstance().format(anzahlBuecher));
				
				lblStatusAnzeige.setText("Alle Bücher erfolgreich eingelesen!");

	    	}
	    });
	    btnGet.setBounds(587, 49, 53, 29);
	    frame.getContentPane().add(btnGet);

Beim Klick auf den Button wird mir nur der Text nach dem einlesen angezeigt. Also "Alle Bücher erfolgreich eingelesen!"

Aber der Status "Bücher werden eingelesen..." wird nicht angezeigt.

Hast du eine Idee?
 

Gucky

Top Contributor
Vielleicht geht das so schnell, dass du es nicht sehen kannst, wie der erste Text eingelesen wird?
Setz mal einen Breakpoint nach dem Setzen des Textes und guck dir dann das Label an.
wird das aus einem anderen Thread als dem GUI-Thread ausgeführt?
 

fetcher

Mitglied
Was die Geschwindigkeit betrifft kann man das schon mal ausschließen. Das einlesen dauert ca. 10-15 Sekunden.
Ich habe mal einen Breakpoint gesetzt und festgestellt, dass das Label nicht gesetzt wird. Das setzen passiert im GUI-Thread.

Sobald ich ein println("Buecher werden eingelesen...") mache, dann wird mir das in der Konsole richtig angezeigt. Nur das setzes des Label's funzt nicht :-( .
 

Gucky

Top Contributor
Und wenn du das Einlesen auskommentierst funktioniert es? Wenn du alles so lässt und nur das Einlesen auskommentierst?
 

fetcher

Mitglied
Genau, dann gehts. Kapier das echt nicht mehr.. der Code wird doch immer von oben nach unten ausgeführt. D.h. er muss ja setText machen, bevor die Methode "einlesenFirst()" aufgerufen wird.
 

fetcher

Mitglied
Genau er wird nicht angezeigt :-( . Ein prinln("..wird eingelesen") zeigt er in der Konsole an und sobald alle Zeilen eingelesen worden sind, gibt er mit über prinln() auch wieder "Erfolgreich angezeigt" aus.
 

fetcher

Mitglied
Kann man vielleicht irgendwie abfragen ob ein label erfolgreich gesetzt wird und true oder false zurückliefert oder ein delay timer einbauen der 5 sekunden abwartet bevor es weiter geht?
 

Gucky

Top Contributor
Den Timer einzubauen ist kein Problem. Thread.sleep(5000) wartet 5 Sekunden aber das bringt nichts, weil der GUI Thread damit angehalten wird.

Aber ich habe zwei Ideen:
  • Du schreibst repaint() hinter den Aufruf von setText(), was aber nicht funktionieren muss, oder
  • Du verfrachtest das Einlesen in einen eigenen Thread, was sowieso viel besser ist, weil dann nicht das GUI für die Zeit des Einlesens blockiert ist.

Da komme ich erst jetzt drauf, weil du nach der Verzögerung gefragt hast:
Der GUI Thread ist für das Neuzeichnen des GUI zuständig und sollte darüber hinaus nichts tun, was länger dauert, weil er sonst das GUI nicht neu zeichnen kann.
Das kannst du mit einem Arbeiter vergleichen. Dieser Arbeiter hat zwei Stapel von Aufgaben. Der Eine wird dann abgearbeitet, wenn er Zeit hat. Der Andere wird sofort abgearbeitet.
Auf dem Ersten liegt nur eine Aufgabe: Neuzeichnen des GUI
Auf dem Anderen liegt alles Andere.
 

fetcher

Mitglied
Vielen Dank für deine Hilfe. Kannst du mir ein Beispiel dazu geben? Bin nämlich noch ziemlicher Anfänger. Das repaint hat nicht funktioniert.
 

Gucky

Top Contributor
Das repaint() nicht funktioniert, habe ich mir gedacht.

Multithreading ist ein Thema, zu dem tausende Tutorials im Internet kursieren. Ich muss nicht den Speicher vom Java Forum mit einem Weiteren zumüllen. ;)

Ich gebe dir als Stichworte: Thread und Eventhandling.
Mit diesen drei Stichworten solltest du schon einmal sehr weit kommen.
Wenn du dann immer noch Probleme hast, dann melde dich wieder und ich werde sehen, was ich tun kann ;)
Aber einen Tipp habe ich noch: Überleg dir zuerst, wie du den Thread und das Eventhandling zu benutzen planst, poste dies und ich gucke da noch mal drüber. Dabei kann man nämlich noch einen doofen Fehler machen. Ich spreche aus Erfahrung ;)
Diese Erfahrung möchte ich dir aber nicht nehmen, weshalb ich sie dir nicht poste.
 

fetcher

Mitglied
Hallo, ich habe es nun hinbekommen *freu*. Habe jetzt "EventQueue.invokeLater(new Runnable()" verwendet. Damit gehts..

Das ist jetzt mein Code

Java:
JButton btnGet = new JButton("GET");
	    btnGet.addActionListener(new ActionListener() 
	    {
	    	public void actionPerformed(ActionEvent e) 
	    	{
	    		
	    		lblStatusAnzeige.setText("Bücher werden eingelesen...");
	    		
	    		EventQueue.invokeLater(new Runnable()
	    		{
	    			public void run()
	    			{
	    				try
	    				{
	    					einlesenFirst();
	    					
	    					DefaultTableModel modelNeu = getTableAll();
	    					
	    					table.setModel(modelNeu);
	    					table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
	    					table.getColumn("Name").setPreferredWidth(590);
	    					
	    					lblAnzahl.setText("" + NumberFormat.getInstance().format(anzahlBuecher));
	    					
	    					lblStatusAnzeige.setText("Alle Bücher erfolgreich eingelesen!");
	    				
	    				} catch (Exception e)
	    				{
	    					e.printStackTrace();
	    				}
	    			}
	    		});
	    		
	    	}
	    });
	    btnGet.setBounds(587, 49, 61, 29);
	    frame.getContentPane().add(btnGet);
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Java Label hat komischen text Java Basics - Anfänger-Themen 4
W Klassen Fehler bei public void setLabelText(JLabel label, String text) Java Basics - Anfänger-Themen 11
R Text vom Label ändern Java Basics - Anfänger-Themen 14
N Text in Label ändern Java Basics - Anfänger-Themen 11
H Text aus Textfeld per Actionlistener in Label ausgeben. Java Basics - Anfänger-Themen 6
M Text in Label per Button Java Basics - Anfänger-Themen 4
rafi072001 Assoziation zwischen Musiker und Label Java Basics - Anfänger-Themen 1
J Hilfe beim Label animieren Java Basics - Anfänger-Themen 1
J Java FX - Label aktualisieren Java Basics - Anfänger-Themen 1
M Java GUI label ändert sich erst zum Schluss Java Basics - Anfänger-Themen 4
S Counter Label Button Java Basics - Anfänger-Themen 4
J JavaFX Label,Button zur Laufzeit Java Basics - Anfänger-Themen 30
M Mit KeyListener Farbe von Label ändern Java Basics - Anfänger-Themen 13
B Datenbank, aktuelle Ende als Zahl an Label übergeben Java Basics - Anfänger-Themen 7
J Einen Buttonklick in Label anzeigen Java Basics - Anfänger-Themen 6
J Erste Schritte Mit repaint() ist Label nicht sichtbar Java Basics - Anfänger-Themen 15
V Label-Problem Java Basics - Anfänger-Themen 4
H Stringanzeige in einem Label Java Basics - Anfänger-Themen 2
J JavaFX -> SocketIO -> Thread -> Update Label Java Basics - Anfänger-Themen 13
KeVoZ_ Label auf JFrame willkürlich Positionieren Java Basics - Anfänger-Themen 2
N Dynamisch erzeugtes Label wird nicht angezeigt, TextField schon Java Basics - Anfänger-Themen 1
M Ausgabe eines Arrays auf Label (Javafx) Java Basics - Anfänger-Themen 4
V Die die aktuelle Größe zusätzlich in einem Label angezeigt wird Java Basics - Anfänger-Themen 11
T Erste Schritte 2 Codes zusammen fügen / Label in JFrame Java Basics - Anfänger-Themen 1
S Label Wert zuweisen Java Basics - Anfänger-Themen 8
W Erste Schritte Timer soll jede Sekunde Label aktualisieren Java Basics - Anfänger-Themen 5
S Label in Vordergrund Java Basics - Anfänger-Themen 4
G GUI Label Werte ersetzen Java Basics - Anfänger-Themen 25
D String aus txt in label für Tabelle einfügen Java Basics - Anfänger-Themen 8
W GUI Label, ComboBox Java Basics - Anfänger-Themen 4
M BufferedReader => TextField/Label Java Basics - Anfänger-Themen 8
M Ausgabe einer ArrayList auf einem Label Java Basics - Anfänger-Themen 4
W Java label nicht ansprechbar Java Basics - Anfänger-Themen 7
T Icon eines Label speichern Java Basics - Anfänger-Themen 9
J Uhr:Label aktuallisieren Java Basics - Anfänger-Themen 7
J Zeichen für Durchmesser Ø in Label darstellen Java Basics - Anfänger-Themen 15
J Panel + Label anzeigen - Ich kriege es nicht hin Java Basics - Anfänger-Themen 3
C Panel und Label überdecken sich Java Basics - Anfänger-Themen 2
L Label + MouseListener Java Basics - Anfänger-Themen 12
P Label Array in mouseEntered vergleichen Java Basics - Anfänger-Themen 4
J JPG in einem Label einfügen und anzeigen lassen Java Basics - Anfänger-Themen 2
C Aktueller Wert von einem JSlider auf ein Label Java Basics - Anfänger-Themen 2
J "label.setText" funktioniert nicht Java Basics - Anfänger-Themen 9
C JSlider und JRadioButton auf Label anzeigen? Java Basics - Anfänger-Themen 10
K Werte von 2 Klassen austauschen/ Bild im Label ändern Java Basics - Anfänger-Themen 12
D Vererbung ProcessBar mit einem Label Java Basics - Anfänger-Themen 4
W Anordnung von Label und Button Java Basics - Anfänger-Themen 2
S NullPointerException beim Checkbox-Label-Array mit nextLine() Java Basics - Anfänger-Themen 6
Z Label verschwindet in JScrollPane Java Basics - Anfänger-Themen 7
J Elegante Art mehrere Label mit einem icon zu setzen Java Basics - Anfänger-Themen 13
S Warum zeigt das Label nichts an??? Java Basics - Anfänger-Themen 9
C Label ändert ändert sich nicht Java Basics - Anfänger-Themen 4
S In das Label eines anderen Threads schreiben Java Basics - Anfänger-Themen 2
M Label verschwindet? Java Basics - Anfänger-Themen 3
P Label erstellen und positionieren Java Basics - Anfänger-Themen 5
A TextField + Label = ? Java Basics - Anfänger-Themen 7
Stillmatic1985 Label in einem Frame zentrieren Java Basics - Anfänger-Themen 4
K Button Label lesen Java Basics - Anfänger-Themen 4
Z integer auf Label ausgeben Java Basics - Anfänger-Themen 12
C verschiedene Label auf Knopfdruck abrufen Java Basics - Anfänger-Themen 4
L Label wird nicht richtig dargestellt Java Basics - Anfänger-Themen 2
G Textfeld und Label in einem Tab? Anfänger braucht Hilfe Java Basics - Anfänger-Themen 3
G Hilfe: Label soll ganz nach oben! Java Basics - Anfänger-Themen 6
S Bild im Label ändern Java Basics - Anfänger-Themen 2
T Sonderzeichen in label Java Basics - Anfänger-Themen 4
S break Label als Spungmarken vorher definieren Java Basics - Anfänger-Themen 4
K Wieder Label anzeigen lassen ? Java Basics - Anfänger-Themen 3
K Ergebnisse auf einem Label anzeigen lassen ? Java Basics - Anfänger-Themen 20
P Label nicht bei Progressbar zu sehen Java Basics - Anfänger-Themen 8
K Schrift groesse in einem Label zeigen lassen ! Java Basics - Anfänger-Themen 2
D ImageIcon in Label Java Basics - Anfänger-Themen 7
A label update Java Basics - Anfänger-Themen 10
F Label Schriftfarbe Java Basics - Anfänger-Themen 4
M Label in die Mitte eines Swing Fensters Java Basics - Anfänger-Themen 2
N Überprüfen ob ein Label angeklickt wurde Java Basics - Anfänger-Themen 3
K Array im Label ausgeben ? Java Basics - Anfänger-Themen 10
T Label mehrzeilig? Java Basics - Anfänger-Themen 7
S Abfragen ob Label enabled ist . Java Basics - Anfänger-Themen 2
G Array Label Java Basics - Anfänger-Themen 6
S Von anderer Klasse auf Label zugreifen Java Basics - Anfänger-Themen 6
G Hintergrundbild mit Transparentem Label Java Basics - Anfänger-Themen 5
D "Ueber"-Klasse? / Label Array Probleme Java Basics - Anfänger-Themen 2
T per Button soll inhalt aus Tecxfield in Label übertragen wer Java Basics - Anfänger-Themen 5
H Drehen von Label Java Basics - Anfänger-Themen 2
D Automatische Label übertragung Java Basics - Anfänger-Themen 3
B Label wird ungewollt mehrmals erstellt Java Basics - Anfänger-Themen 16
J label.getSize() gibt 0 ? Java Basics - Anfänger-Themen 2
M Berechnung in Label ausgeben? Java Basics - Anfänger-Themen 3
G Zusatzinfos in einem Label ablegen Java Basics - Anfänger-Themen 10
B In einem Label "Zeilenumbruch" Java Basics - Anfänger-Themen 4
G ein Label FETT ung GROSS ausgeben Java Basics - Anfänger-Themen 4
V Auf Label schreiben Java Basics - Anfänger-Themen 3
J Index für ein Label Java Basics - Anfänger-Themen 8
richis-fragen JTable effektiv angezeigter Text ausgeben nicht Inhalt vom Model Java Basics - Anfänger-Themen 9
A Edit Text Negative Decimalzahlen Java Basics - Anfänger-Themen 18
P Aus Text Datei nur Zahlen übernehmen Java Basics - Anfänger-Themen 13
T Text einlesen code was kommt dahin? Java Basics - Anfänger-Themen 1
R Text in der DB abspeichern, und danach bearbeiten Java Basics - Anfänger-Themen 5
A JTextArea entfernen und durch neuen Text ersetzen Java Basics - Anfänger-Themen 8
JavaBeginner22 Button Text verändern Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben