Hallo zusammen,
habe eine Gui gebaut mit der ich den Datenbank zugriff Testen und vorallem Zeiten messen möchte. Desweitern wollte/sollte ich dann auch mal direkt testen wie das so mit einem Timer funktioniert. Möchte also das wärend des gesamten Datenbankzugriffes ein Zähler in Millisekunden hochläuft. Habe das folgendermassen realisiert.
Im Controller starte ich den TaskTimer wie folgt:
So mein TaskTimer sieht folgender massen aus:
Aber leider funktioniert das ganze nicht. In meinem Feld wird immer erst was angezeigt wenn der durchlauf beendet ist! Und wärend des Druchlaufs passiert gar nichts in der Anzeige. Woran kann das liegen? Bin für jede Hilfe sehr dankbar!
Helft mir bitte ich brauche Argumente für Java und gegen C#!;-) Habe keine Lust auf C# aber das mit dem Timer hat da erstaunlich einfach funktioniert...
habe eine Gui gebaut mit der ich den Datenbank zugriff Testen und vorallem Zeiten messen möchte. Desweitern wollte/sollte ich dann auch mal direkt testen wie das so mit einem Timer funktioniert. Möchte also das wärend des gesamten Datenbankzugriffes ein Zähler in Millisekunden hochläuft. Habe das folgendermassen realisiert.
Im Controller starte ich den TaskTimer wie folgt:
Code:
public class MainPanelController {
private static final MainPanelController INSTANCE = new MainPanelController();
private MainFrame mainFrameMainFrame;
private GregorianCalendar gcStart;
public static MainPanelController getInstance() {
return INSTANCE;
}
private MainPanelController() {
MainFrame mainFrame = new MainFrame();
mainFrameMainFrame = mainFrame;
datenbankzugriff();
}
private void datenbankzugriff() {
Timer timer = new Timer();
gcStart = new GregorianCalendar(Locale.GERMANY);
timer.schedule ( new TaskTimer(), 0, 1 );
... Datenbankzugriff + Ausgabe...
timer.cancel();
}
public void setTimerToGUI(GregorianCalendar gcTimer){
mainFrameMainFrame.getTimerTextField().setText(gcTimer.get(Calendar.HOUR_OF_DAY) + ":"
+ gcTimer.get(Calendar.MINUTE) + ":"
+ gcTimer.get(Calendar.SECOND) + ":"
+ gcTimer.get(Calendar.MILLISECOND));
mainFrameMainFrame.getTimerTextField().repaint();
}
public GregorianCalendar getGcStart(){
return gcStart;
}
}
So mein TaskTimer sieht folgender massen aus:
Code:
public class TaskTimer extends TimerTask {
public void run() {
MainPanelController mainPanelController = MainPanelController.getInstance();
GregorianCalendar gcStart = mainPanelController.getGcStart();
GregorianCalendar gcEnd = new GregorianCalendar(Locale.GERMANY);
long lgcTimer = gcEnd.getTimeInMillis() - gcStart.getTimeInMillis();
GregorianCalendar gcTimer = new GregorianCalendar();
gcTimer.setTimeInMillis(lgcTimer);
gcTimer.setTimeZone(TimeZone.getTimeZone("England"));
mainPanelController.setTimerToGUI(gcTimer);
}
}
Aber leider funktioniert das ganze nicht. In meinem Feld wird immer erst was angezeigt wenn der durchlauf beendet ist! Und wärend des Druchlaufs passiert gar nichts in der Anzeige. Woran kann das liegen? Bin für jede Hilfe sehr dankbar!
Helft mir bitte ich brauche Argumente für Java und gegen C#!;-) Habe keine Lust auf C# aber das mit dem Timer hat da erstaunlich einfach funktioniert...