• 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

0 głosów
197 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,300 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,300 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,300 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ź 185 wizyt
pytanie zadane 8 sierpnia 2017 w Java przez Agam Nowicjusz (200 p.)
0 głosów
0 odpowiedzi 173 wizyt
pytanie zadane 24 lutego 2019 w Java przez AndekQR Użytkownik (880 p.)
0 głosów
1 odpowiedź 250 wizyt

88,721 zapytań

137,333 odpowiedzi

306,822 komentarzy

58,907 pasjonatów

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...