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

TableView Javafx Wyświetlanie danych z metody

VPS Starter Arubacloud
0 głosów
365 wizyt
pytanie zadane 27 listopada 2018 w Java przez mprofit Nowicjusz (180 p.)

Mam klase kalkuratorTempa i chciałbym teraz wyniki z metody ileKilometrow() zamiast w konsoli wyświetlić w TableView. Potrafię wyświetlić dane z konstrukora z klas typu Person poprzez dodanie do listy gdzie wyświetlane są pola ale jak to zrobić z tej metody. Proszę o wskazówki.

public class KalkulatorTempa {
 
    private double dystansKm;
    private int spodziewanyCzasG;
    private int spodziewanyCzasM;
    private int spodziewanyCzasS;
 
    KalkulatorTempa(double dystansKm){
        this.dystansKm = dystansKm;
    }
 
    KalkulatorTempa(double dystansKm, int spodziewanyCzasG, int spodziewanyCzasM, int spodziewanyCzasS){
        this.dystansKm = dystansKm;
        this.spodziewanyCzasG = spodziewanyCzasG;
        this.spodziewanyCzasM = spodziewanyCzasM;
        this.spodziewanyCzasS = spodziewanyCzasS;
    }
 
    public double getDystansKm() {
        return dystansKm;
    }
 
    public int getSpodziewanyCzasG() {
        return spodziewanyCzasG;
    }
 
    public int getSpodziewanyCzasM() {
        return spodziewanyCzasM;
    }
 
    public int getSpodziewanyCzasS() {
        return spodziewanyCzasS;
    }
 
    public double tempoBiegu(){
        int spodziewanyCzasWSekundach = getSpodziewanyCzasG()*3600+getSpodziewanyCzasM()*60+getSpodziewanyCzasS();
        double tempoNaKm = spodziewanyCzasWSekundach / getDystansKm();
        return tempoNaKm;
    }
    public void ileKilometrow(){
        KalkulatorTempa kalk = new KalkulatorTempa(dystansKm, spodziewanyCzasG,spodziewanyCzasM,spodziewanyCzasS);
 
        double t =kalk.tempoBiegu();
 
          for (int i=1; i<=getDystansKm(); i++){
 
              double wynik =  t*i;
              double h = (int)wynik/3600;
              //double m = (int)wynik/60;
              double m = ((int)wynik%3600)/60;
              double s = wynik%60;
 
           System.out.println("Tempo na "+ i+" km to:  "+(int)h+":"+(int)Math.round(m)+":"+(int)Math.round(s));
 
              }
       }
 
    }
    public String toString(){
        if(getDystansKm()==21.097){return "21.097 km Polmaraton";}
        else if(getDystansKm()==42.195){return  "42.195 km Maraton";}
        else
        return  (int)getDystansKm()+" km";
    }
 
}

1 odpowiedź

0 głosów
odpowiedź 27 listopada 2018 przez mbabane Szeryf (79,280 p.)
public void ileKilometrow(){
        KalkulatorTempa kalk = new KalkulatorTempa(dystansKm, spodziewanyCzasG,spodziewanyCzasM,spodziewanyCzasS);
 
        double t =kalk.tempoBiegu();
 
          for (int i=1; i<=getDystansKm(); i++){
 
              double wynik =  t*i;
              double h = (int)wynik/3600;
              //double m = (int)wynik/60;
              double m = ((int)wynik%3600)/60;
              double s = wynik%60;
 
           System.out.println("Tempo na "+ i+" km to:  "+(int)h+":"+(int)Math.round(m)+":"+(int)Math.round(s));
 
              }
       }

W powyższej metodzie to:

KalkulatorTempa kalk = new KalkulatorTempa(dystansKm, spodziewanyCzasG,spodziewanyCzasM,spodziewanyCzasS);

jest trochę bez sensu, bo tworzysz obiekt, do wywołania metody ileKilometrow() a w tej metodzie tworzysz obiekt tej samej klasy. Od razu uzyj tego konstruktora, a zmienna kalk zastąp this:

Kod metody ileKilometrow

public void ileKilometrow(){
       
        double t =this.tempoBiegu();
 
          for (int i=1; i<=getDystansKm(); i++){
 
              double wynik =  t*i;
              double h = (int)wynik/3600;
              //double m = (int)wynik/60;
              double m = ((int)wynik%3600)/60;
              double s = wynik%60;
 
           System.out.println("Tempo na "+ i+" km to:  "+(int)h+":"+(int)Math.round(m)+":"+(int)Math.round(s));
 
              }
       }

Wywolanie metody:

 KalkulatorTempa kalk = new KalkulatorTempa(dystansKm, spodziewanyCzasG,spodziewanyCzasM,spodziewanyCzasS);

kalk.ileKilometrow();

A teraz zastanów się jak można wydobyć/zwrócić z obiektu/metody jakąś wartość i przekazać ją do innego obiektu na przykład do TableView. Dodam, że potrafisz to zrobić, bo w tym kodzie to stosujesz.

komentarz 27 listopada 2018 przez mprofit Nowicjusz (180 p.)

Tak wywoływałem

KalkulatorTempa kalk = new KalkulatorTempa(dystansKm, spodziewanyCzasG,spodziewanyCzasM,spodziewanyCzasS);

 

kalk.ileKilometrow();

Np. 

KalkulatorTempa kalk = new KalkulatorTempa(42.195, 3,30,20);

 

kalk.ileKilometrow();

Czyli podaje długość dystansu 42.195km Zakładany czas w maratonie 3:30:20. I teraz poprzez metodę ileKilometrow() chciałbym uzyskać listę czasów na poszczególnych kilometrach. W konsoli wygląda to mniej więcej tak:

Dystans 42.195km Zakladany czas 3:30:20

Tempo na 1 km to:  0:4:59
Tempo na 2 km to:  0:9:58
Tempo na 3 km to:  0:14:57
Tempo na 4 km to:  0:19:56
Tempo na 5 km to:  0:24:55
Tempo na 6 km to:  0:29:55
Tempo na 7 km to:  0:34:54
Tempo na 8 km to:  0:39:53
Tempo na 9 km to:  0:44:52
Tempo na 10 km to:  0:49:51
Tempo na 11 km to:  0:54:50
Tempo na 12 km to:  0:59:49
Tempo na 13 km to:  1:4:48
Tempo na 14 km to:  1:9:47
Tempo na 15 km to:  1:14:46
Tempo na 16 km to:  1:19:45
Tempo na 17 km to:  1:24:44
Tempo na 18 km to:  1:29:44
Tempo na 19 km to:  1:34:43
Tempo na 20 km to:  1:39:42
Tempo na 21 km to:  1:44:41
Tempo na 22 km to:  1:49:40
Tempo na 23 km to:  1:54:39
Tempo na 24 km to:  1:59:38
Tempo na 25 km to:  2:4:37
Tempo na 26 km to:  2:9:36
Tempo na 27 km to:  2:14:35
Tempo na 28 km to:  2:19:34
Tempo na 29 km to:  2:24:34
Tempo na 30 km to:  2:29:33
Tempo na 31 km to:  2:34:32
Tempo na 32 km to:  2:39:31
Tempo na 33 km to:  2:44:30
Tempo na 34 km to:  2:49:29
Tempo na 35 km to:  2:54:28
Tempo na 36 km to:  2:59:27
Tempo na 37 km to:  3:4:26
Tempo na 38 km to:  3:9:25
Tempo na 39 km to:  3:14:24
Tempo na 40 km to:  3:19:24
Tempo na 41 km to:  3:24:23
Tempo na 42 km to:  3:29:22

Chciałbym to uzyskać w tableview

komentarz 28 listopada 2018 przez mbabane Szeryf (79,280 p.)
edycja 28 listopada 2018 przez mbabane

Ok, jeśli wiesz co to jest lista w Javie to jednym z rozwiazan będzie aby metodę ileKilometrow zrobić tak by zwracała listę z odpowiednimi danymi. A potem można już łatwo taką listę przekazać do TableView.

Zerknij sobie na ten tutorial JavaFx:

https://www.youtube.com/playlist?list=PLpzwMkmxJDUwQuQR7Rezut5UE_8UGDxkU

Jest tam material dotyczący TableView

Generalnie do TV przekazuje się listę obiektów, a poźniej ustawia się co ma być wyswietlone w danej kolumnie.

komentarz 28 listopada 2018 przez mprofit Nowicjusz (180 p.)
Dziękuję bardzo za podpowiedzi. Przeglądałem wcześniej ten tutorial  i trochę go przerabiałem. Tak jak pisałem wcześniej przekazanie obiektów z konstruktora nie jest dla mnie problemem tylko naprawdę nie wiem jak zrobić to z metody. Może jakaś bliższa wskazówka. Wstępny kod. Dzięki
komentarz 29 listopada 2018 przez mbabane Szeryf (79,280 p.)

Stworz sobie jakis obiekt do przechowywania pojedynczego wyniku np.:

public class Tempo
{
     private int distance;
     private int hours;
     private int minutes;
     private int seconds;


    //konstruktory settery getery

}

Zapisuj tam wyniki i dodawaj je do listy, którą zwrócisz jako wynik działania ileKilometrow()

public List<Tempo> ileKilometrow()
{

      //iplemetnacja

     return results;
}

Taką listę będizesz mogl juz prosto dodać do TV.

Podobne pytania

0 głosów
1 odpowiedź 218 wizyt
pytanie zadane 8 sierpnia 2017 w Java przez Agam Nowicjusz (200 p.)
0 głosów
0 odpowiedzi 215 wizyt
pytanie zadane 24 lutego 2019 w Java przez AndekQR Użytkownik (880 p.)
0 głosów
1 odpowiedź 346 wizyt

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...