logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Java 8 - Jak zaimplementować przycisk pauzy i kontynuacji w aplikacji?

n.vision 24 Sty 2017 18:33 783 6
REKLAMA
  • #1 16224808
    n.vision
    Poziom 31  
    Posty: 1763
    Pomógł: 108
    Ocena: 260
    Cześć.

    Piszę post, bo siedzę nad sprawą dwa tygodnie, może już więcej, zęby na tym zjadam. Googla przeglądam kilka razy dziennie. Dopiero uczę się, chciałem zrobić pierwszy projekt. Nie mam kogo zapytać.

    Jak zrobić przycisk, który będzie mógł obsłużyć pauzę/continue?

    Być może klasa Application której użyłem nie daje takich możliwości. Jej metody, start(), stop() i handle() muszą być typu void, co uniemożliwia mi zapisanie wartości do następnego wciśnięcia, lub do przekazania do innego przycisku. Próbowałem więc wysłać wartość do osobnej klasy, a później warunkowo odtwarzać w metodzie start(), ale dostaję komunikat o niezamkniętej pętli (??).

    Będę wdzięczny za pomysł, wskazanie drogi, innej klasy. Kod wygląda jak następuje:

    Kod: Java
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • Pomocny post
    #2 16225018
    dzielik
    Poziom 16  
    Posty: 186
    Pomógł: 20
    Ocena: 34
    O to Ci chodziło?

    Kod: Java
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #3 16225062
    n.vision
    Poziom 31  
    Posty: 1763
    Pomógł: 108
    Ocena: 260
    Niech Cię (...) drzwi ścisną. Będę teraz głowił się nad innymi rzeczami, przede wszystkim co się stało : )

    Tony złota życzę : )
  • REKLAMA
  • Pomocny post
    #4 16225102
    dzielik
    Poziom 16  
    Posty: 186
    Pomógł: 20
    Ocena: 34
    Nie ma się nad czym głowić:)

    Czas ustawia Ci linijka:
    Kod: Java
    Zaloguj się, aby zobaczyć kod


    Przy czym startTime to moment uruchomienia timera - czyli kliknięcia start - no tak masz napisane:)
    Kod: Java
    Zaloguj się, aby zobaczyć kod


    Więc po każdym kliknięciu przycisku start zerowało Ci timer.

    Dodałem zmienną globalną:
    Kod: Java
    Zaloguj się, aby zobaczyć kod

    Musi być final ponieważ jest w implementacji new AnimationTimer(), dlatego jest tablica - bo zwykłej zmiennej final nie można modyfikować, a ja chcę przetrzymywać dotychczas zmierzony czas.

    W momencie kliknięcia stop zapisuję aktualny czas do displayTime[0].

    Po kliknięciu start odczytuję tą wartość i dodaję do aktualnie zmierzonej od momentu wciśnięcia przycisku.
  • REKLAMA
  • #5 16225137
    n.vision
    Poziom 31  
    Posty: 1763
    Pomógł: 108
    Ocena: 260
    Rozumiem. Trochę przesadzam, jako tako czytam kod, w końcu siedzę nad nim od dłuższego czasu. Najbardziej interesuje mnie klamra Double[]{0d};

    Co to powoduje? Nie spotkalem się z takim zapisem.

    Btw, Twoja płynność posługiwania się kodem trochę mnie intryguje, ja tnę się na czytaniu API. Polecasz coś do nauki? Przeleciałem podstawy, uznałem, że teraz napiszę pierwszy program i prawdopodobnie wezmę się za Java EE
  • Pomocny post
    #6 16225169
    dzielik
    Poziom 16  
    Posty: 186
    Pomógł: 20
    Ocena: 34
    Double[] tab = new Double[]{0}
    to jest to samo co:
    Double[] tab = new Double[1];
    tab[0] = 0d
    Czyli taki skrócony sposób na wypełnienie tablicy od razu przy jej tworzeniu.
    Tu znajdziesz inne przykłady http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html

    Lektury nie polecę:) najlepiej jest się uczyć pisząc. Oczywiście jakieś podstawy trzeba mieć.
  • #7 16226597
    n.vision
    Poziom 31  
    Posty: 1763
    Pomógł: 108
    Ocena: 260
    Problem rozwiązano w poście #2, wyciągając wartość licznika za pomocą tablicy.

    Kod: Java
    Zaloguj się, aby zobaczyć kod

Podsumowanie tematu

✨ Użytkownik poszukiwał sposobu na implementację przycisku pauzy i kontynuacji w aplikacji Java 8, napotykając trudności związane z metodami klasy Application, które nie pozwalały na przechowywanie wartości między kliknięciami. Odpowiedzi sugerowały użycie tablicy do przechowywania czasu oraz implementację klasy AnimationTimer. Użytkownik dowiedział się, że można zainicjować tablicę Double[] w skrócony sposób oraz że kluczowe jest zachowanie wartości czasu po zatrzymaniu timera, co pozwala na kontynuację pomiaru po wznowieniu.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA