czas pracy programu

0

Witam
Chciałbym dodać do swojego programu, aby był wyświetlany czas jego pracy. Dodałem wiec do głównego okna JTextArea i za pomocą metody append dodałem coś takiego:

(System.currentTimeMillis()-czasStartu)/1000

czasStartu oczywiście ustawiam w konstruktorze też za pomocą currentTimeMillis.
Problem w tym że czas się nie odświeża, cały czas jest zero. Czy trzeba to zrobić jakoś na wątkach czy jest jakiś inny sposób?
Później dodałbym jakiś przycisk zerujący i czas zacząłby się naliczać od nowa, no ale najpierw muszę się z tym uporać.
Proszę o pomoc.
Pozdr

0

Odpowiedź to:(System.currentTimeMillis()-czasStartu)/1000d
Dzieląc dwa inty przez siebie nie otrzymasz liczby zmiennoprzecinkowej

0

Ale System.currentTimeMillis() zwraca Long, czasStartu też jest Long'iem, a czas ma się na bieżąco aktualizować.
Nie będzie to liczba zmiennoprzecinkowa tylko czas w sekundach.

0

Ok, dodałem do metody actionPerformed następujący kod:

czas.setText(""+(System.nanoTime()-czasStartu)/1000000000+"");
		repaint();

I kiedy naciskam jakiś przycisk to czas jest aktualizowany, ale jak zrobić żeby aktualizował się cały czas na bieżąco?

0

Jeżeli tak to problem nie leży w tej linijce, myślałem, że chcesz otrzymać np liczbę z zakresu 0-1s i ci nie wychodzi. Skoro tak zrób sobie osobny wątek jeżeli próbujesz liczyć w czasie realnym. A, żeby naprawić twój błąd pokaż resztę kodu, możliwości są różne, źle wyświetlasz lub ciągle ustawiasz wartość startową na nowo

0

@DoKolejnegoTwojegoPostu

Żeby aktualizował się na bieżąco musisz(powinieneś) zrobić to w nowym wątku:

 
long czasDoWyswietlenia = 0;

run(){
while(1){
textARea.setText("" + czasDoWyswietlenia++ );
Thread.Sleep(1000);
}
}
0

Dzięki wielkie!
Zadziałało :) Niestety nie za bardzo jeszcze ogarniam wątki i muszę o tym poczytać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1