• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed JavaFX Stoper

Object Storage Arubacloud
0 głosów
689 wizyt
pytanie zadane 14 sierpnia 2018 w Java przez DanielKowalskiX Początkujący (460 p.)
zamknięte 16 sierpnia 2018 przez DanielKowalskiX
Potrzebuję do mojej aplikacji licznik czasu, który wskazywałby czas w sekundach, jednak zależy mi na tym, żeby w tym czasie móc wykonywać inne zadania.
Szukam pomysłu jak można by było go stworzyć.

Może jest sposób, żeby pobierał aktualny czas z komputera i na tej podstawie obliczał?
Problem wtedy byłby taki jak zrobić, żeby co sekundę pobierał ten czas z komputera i aktualizował.

Mając dwa Kontrolery program może obliczać jednocześnie dwie rzeczy?
Wtedy można byłoby ustawić pętlę w drugim Kontrolerze, który tylko by sprawdzał czas, a w pierwszym wykonywałyby się wszystkie akcje programu.

Brakuje mi pomysłów, jak waszym zdaniem można to ugryźć?
To nie powinno być takie trudne..
komentarz zamknięcia: Została podana dokładna odpowiedź

1 odpowiedź

+2 głosów
odpowiedź 14 sierpnia 2018 przez izonik Stary wyjadacz (12,560 p.)
wybrane 16 sierpnia 2018 przez DanielKowalskiX
 
Najlepsza
Nie znam się na javie, ale może spróbuj użyć wątków. W Google na pewno znajdziesz informację na ich temat.

Ale w Javie jestem totalnym laikem więc mogę się mylić, a to jest tylko sugestia.

Pozdrawiam.
1
komentarz 16 sierpnia 2018 przez DanielKowalskiX Początkujący (460 p.)
edycja 16 sierpnia 2018 przez DanielKowalskiX

Udało mi się znaleźć rozwiązanie wykorzystując nową klasę:

Class MainController{

public Timer timer1 = new Timer();
public MyTimerTask timer1_task = new MyTimerTask(this);

public void initialize(){
timer1.schedule (timer1_task, 0, 1000); // start timera i ustawienie czasu, 1000 to jedna sekunda
}

public void tick(){
//tutaj kod, który co sekundę ma się wykonywać
}

public void exit(){
timer1.cancel();
}
Class MyTimerTask extends TimerTask {
private MainController controller

public void run() {
controller.tick();
}

public MyTimerTask(MainController controller){
super();
this.controller = controller;
}
}

Zostawiam szkielet dla potomnych.

Jeszcze kilka dodatkowych informacji, które mogą się przydać, jeśli ktoś będzie chciał to wykorzystać:

W głównym pliku Main.java warto dodać:

primaryStage.setOnHidden(x -> mainController.exit());


Timer nie zakończy swojego działania, nawet jeśli zamkniemy program, dlatego musimy zakończyć go sami, powyższa linijka pobiera moment zakończenia programu i na sam koniec wykona funkcję exit().
 

 

komentarz 16 sierpnia 2018 przez DanielKowalskiX Początkujący (460 p.)
W ten sposób aplikacja wykonuje obliczenia stopera w tle, co jest wydajnym rozwiązaniem.

Podobne pytania

+1 głos
1 odpowiedź 731 wizyt
pytanie zadane 3 stycznia 2022 w Python przez hajscker Nowicjusz (180 p.)
0 głosów
0 odpowiedzi 179 wizyt
0 głosów
2 odpowiedzi 249 wizyt

92,551 zapytań

141,393 odpowiedzi

319,522 komentarzy

61,936 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...