Set, metody i konwersja

Odpowiedz Nowy wątek
2019-02-03 22:56
P K
0

Witam!

Jestem zielona w javie, na podstawie tutorialu z youtube napisałam krótki program MVC, ale nie do końca wiem co robi się w tej linijce kodu
(model jest moją klasą w pakiecie model, który następniedeklaruję w widoku)

model.setLiczba(Integer.parseInt(widok.txtLiczba.getText())); // jak nazwać to co się tutaj robi

mógłby mi to ktoś wyjaśnić?

Zachodzi tutaj konwersja typu zmiennej ze Stringa na Int? String bo w widoku liczba pojawia w polu tekstowym (get.Text), czyli w modelu mam Int, a w widoku liczba jest już Stringiem? Proszę o wytłumaczenie? :(

Pozostało 580 znaków

2019-02-03 23:51
1

widok.txtLiczba.getText() pobiera Stringa następnie Integer.parseInt() zmienia napis w Int który przekazujesz do metody setLiczba na rzecz obiektu model. Jeżeli w stringu będziesz miała tekst (np "A bcosd 123") będzie rzucony wyjątek

"Zachodzi tutaj konwersja typu zmiennej ze Stringa na Int?" Wywołujesz metode która zmienia napis na int o ile jest to możliwe.
"String bo w widoku liczba pojawia w polu tekstowym (get.Text), czyli w modelu mam Int, a w widoku liczba jest już Stringiem?" Tak ponieważ dostajesz wartość a nie referencje.

edytowany 4x, ostatnio: krancki, 2019-02-03 23:54

Pozostało 580 znaków

2019-02-04 01:46
P K
0

Czyli dobrze rozumiem, że interpretacja tej linii kodu

widok.txtRezultat.setText(String.valueOf(model.getRezultat()));

to : wywołana metoda getRezultat w obiekcie model, zamienia konwersją liczbę int na ciąg znaków, który przekazywany jest do metody setText? A dalej?

Co się dzieje w txt.Rezultat? Chodzi o to, że setText jest wywoływane w txtRezultat w obiekcie widok?

krancki napisał(a):

widok.txtLiczba.getText() pobiera Stringa następnie Integer.parseInt() zmienia napis w Int który przekazujesz do metody setLiczba na rzecz obiektu model. Jeżeli w stringu będziesz miała tekst (np "A bcosd 123") będzie rzucony wyjątek

"Zachodzi tutaj konwersja typu zmiennej ze Stringa na Int?" Wywołujesz metode która zmienia napis na int o ile jest to możliwe.
"String bo w widoku liczba pojawia w polu tekstowym (get.Text), czyli w modelu mam Int, a w widoku liczba jest już Stringiem?" Tak ponieważ dostajesz wartość a nie referencje.

Pozostało 580 znaków

2019-02-04 07:49
1

to : wywołana metoda getRezultat w obiekcie model, zamienia konwersją liczbę int na ciąg znaków, który przekazywany jest do metody setText? A dalej?

Ciąg znaków zapisywany jest w txtRezultat w obiekcie widok, czyli dokładnie tak jak piszesz niżej.

EDIT. txtRezultat wygląda też jak instancja jakiejś klasy, czyli wg. mnie to coś takiego:

public class TxtRezultat {
    private String tekst;

    public void setTekst(String tekst) {
        this.tekst = tekst;
    }
}
public class Widok {
    public TxtRezultat txtRezultat;
}

Wtedy żeby zapisać coś do zmienne tekst to robimy to przez txtRezultat:

widok.txtRezultat.setTekst("Jakis tekst");
edytowany 2x, ostatnio: kiyo, 2019-02-04 08:14

Pozostało 580 znaków

2019-02-04 08:02
P K
0

Dziękuję bardzo! Czy mógłbyś powiedzieć mi jeszcze czy dobrze rozumiem ActionListenera.

Dziedziczę klasę głowną po ActionListener, a następnie w konstruktorze klasy napisałam

this.widok.policz.addActionListener(this); // sprawdzam działanie przycisku? jeśli go ktoś wciśnie to wtedy wywołuję akcję actionPerformed(ActionEvent e) ???

a dalej

public void actionPerformed(ActionEvent e) { // - czyli jest wywoływana zaraz po listenerze i w tej metodzie wykonują się moje obliczenia do modelu?
model.setLiczba(Integer.parseInt(widok.txtLiczba.getText())); ... itd. }

Pozostało 580 znaków

2019-02-04 08:52
0

this.widok.policz.addActionListener(this);

W tym miejscu dodajesz słuchacza. Jako, że używasz this to słuchaczem będzie klasa, w której wywołujesz tą metodę.

public void actionPerformed(ActionEvent e) { // - czyli jest wywoływana zaraz po listenerze i w tej metodzie wykonują się moje obliczenia do modelu?

Ta metoda wywoływana jest kiedy wykonana jest akcja na obiekcie do którego dodałaś listenera. Czyli jeśli policz byłoby przyciskiem to po jego naciśnięciu wykonałaby się metoda actionPerformed, czyli w Twoim przypadku obliczenia do modelu.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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