Set, metody i konwersja

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? :(

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.

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.

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");
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. }

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.

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