MVC kalkulator kłopot z kontrolerem

MVC kalkulator kłopot z kontrolerem
ZI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 22
0

Witam, chciałem dla treningu napisać sobie kalkulator MVC, ale mam problem z ActionListenere, wywala mi nullpointerexeption w kontrolerze. Ogólnie jakbyście powiedzieli co robie źle itd to bede wdzieczny :P

https://github.com/Zibann/MVCtest

bogdans
  • Rejestracja: dni
  • Ostatnio: dni
1

Masz w programie dwa obiekty typu ControllerTest. Jeden tworzysz w metodzie main

Kopiuj
ControllerTest controllerTest = new ControllerTest(viewTest, modelTest);

, w tym obiekcie pola nie są nullami.
Drugi tworzysz w konstruktorze klasy ViewTest

Kopiuj
controllerTest = new ControllerTest();

, w nim oba pola są nullami. W ActionListenerze korzystasz z tego drugiego.

ZI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 22
0

dzieki za pomoc, niestety ciągle nie moge sobie poradzic :P

bogdans
  • Rejestracja: dni
  • Ostatnio: dni
0

W klasie ControllerTest rozbuduj konstruktor

Kopiuj
    public ControllerTest(ViewTest viewTest, ModelTest modelTest) {
        super();
        this.viewTest = viewTest;
        this.modelTest = modelTest;
        viewTest.setController(this);
    }

W klasie ViewTest usuń wiersz

Kopiuj
controllerTest = new ControllerTest();

i dopisz metodę
public void setController(ControllerTest controllerTest)
{
this.controllerTest = controllerTest;
}

Kopiuj
ZI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 22
0

zrobiłem tak, tylko że teraz nie dodaje mi Listenera do przycisków

bogdans
  • Rejestracja: dni
  • Ostatnio: dni
1

W konstruktorze tylko

Kopiuj
        for(JButton b: buttonList){
            panel.add(b);
        }

bo controllerTest jest jeszcze nullem.

Kopiuj
    public void setController(ControllerTest controllerTest)
    {
        this.controllerTest = controllerTest;
        for(JButton b: buttonList){
            b.addActionListener(controllerTest);
        }        
    }
ZI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 22
0

działa, jesteś mistrzem! :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.