ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
1006
1006
EMPFEHLEN
-
Hollo liebe Leute,
ich bin schon am verzweifeln
habe folgendes Problem: ein JLabel in dem ich einfach die abgelaufene Zeit anzeigen möchte wird ständig übermalt wenn ich setText mache.
starte ich das ganze soCode :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
class Task extends TimerTask { public void run() { long currentUserElapsedTime = System.currentTimeMillis() - startTime; try{ userScor.setUserElapsedTime(userElapsedTime + currentUserElapsedTime); //lblElapsedTime.invalidate(); lblElapsedTime.setText( new java.sql.Time(userElapsedTime + currentUserElapsedTime -3600000).toString()); //lblElapsedTime.invalidate(); //lblElapsedTime.repaint();//validate(); ? }catch(RemoteException e){ System.out.println("RemoteException, TimerTask"); } } }
bei jedem aufruf wird der Text in meinem Label nicht neu geschrieben sondern drüber. Und man sieht Teile vom alten Text.Code :1 2 3
Timer timer= new Timer(); // Timer starten nach 1000 ms und dann jede weitere 1000 ms rein ins Task timer.schedule( new Task(), 1000, 1000 );
WIESO NUR?
wenn ich lblElapsedTime.setText(...) nicht im Timer zig mal nacheinander setze, geht es ohne Problemme. Ich habe schon mit einem Thread versucht. Und die verschiedensten Kombinationen von repaint(), validate(), invalidate(), doLayout() ,revalidate() und updateUI() probiert. Hilft nichts - Ergebniss bleibt gleich : Label wird übermalt und alles wird natürlich immer dunkler.
Woran liegt es? Helft mir bitte.
-
23.01.05 11:50 #2
- Registriert seit
- Nov 2004
- Beiträge
- 284
Das hört sich ja sehr merkwürdig an. Nehme an das JLabel liegt in einem JFrame o.ä.? Probiers dann mal mit frame.update(); oder frame.update(frame.getGraphics());
-
danke, habe versucht. Leider ohne Erfolg. Aber ich habe jetzt statt JLabel nur Label benutzt und es geht ohne Problemme. Ich muss nur noch den Hintergrund anpassen.
Danke an alle!
-
grüß Dich,
ich bin mir nicht ganz sicher, aber könnte es sein, dass Dein Task nicht im richtigen Thread läuft?
Ich denke um es zum gelingen zu bringen müsste er im thread der Event-Queue laufen.
das erreicht man in dem man eine der Routinen
SwingUtilities.invokeAndWait(Runnable);
SwingUtilities.invokeLater(Runnable);
verwendet.
um erstmal festzustellen in welchem Thread Dein Label upgedated wird empfehle ich Dir folgendes mal mit reinzusetzen:
System.out.println("Thread="+Thread.currentThread().toString());
viel Glück
Takidoso
-
Da fällt mir grade noch ein, dass man auch alternativ zu Deinem verwendeten Timer, ich glaube Du gebrauchst den java.util.Timer, den javax.swing.Timer verwenden kannst, denn der setzt das ganze gleich in den Thread der Event-Queue
viel Glück
Takidoso
Ähnliche Themen
-
Webmail -> Neuer Server - und die alten Mails?
Von scrat17 im Forum Hosting & WebserverAntworten: 0Letzter Beitrag: 29.01.08, 18:02 -
JTextPane HTML-Page anzeigen über setText()
Von merlinonline im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 2Letzter Beitrag: 17.12.07, 19:53 -
wie wird es richtig geschrieben ? ....
Von Trasher im Forum PHPAntworten: 5Letzter Beitrag: 01.03.06, 09:39 -
CSV wird nicht komplett in DB geschrieben
Von max im Forum PHPAntworten: 2Letzter Beitrag: 14.06.05, 16:22 -
Nur Datensatz 1 wird geschrieben!
Von HuRRaBaeRcHi im Forum C/C++Antworten: 3Letzter Beitrag: 21.04.04, 18:50





Zitieren
Login





