Model MVC co robie źle?

0

Nadszedl czas aby nauczyć się "modelu" MVC. Po przeczytaniu kilku stron dokumentacji napisałem pierwsze "coś". Proste okno z dwoma polami, po wciśnięciu przycisu chciałbym aby dane z pól wyświetliły się poniżej. Jednak cos zrobiłem źle i nie moge wyszukać błędu.

public class Osoba {
    
    private String imie;
    private String nazwisko;

    public Osoba() {
    }
    
    public Osoba(String imie, String nazwisko) {
        this.imie = imie;
        this.nazwisko = nazwisko;
    }
    
    public String getImie() {
        return imie;
    }

    public void setImie(String imie) {
        this.imie = imie;
    }

    public String getNazwisko() {
        return nazwisko;
    }

    public void setNazwisko(String nazwisko) {
        this.nazwisko = nazwisko;
    }
}
public class View extends javax.swing.JFrame implements java.util.Observer{

    public View() {   
        
        initComponents();
        setVisible(true);
        setLocationRelativeTo(null);
    }

 @Override
    public void update(Observable obs, Object obj) {
        Osoba o = (Osoba) obj;
        wyjscieImie.setText(o.getImie());
        wyjscieNazwisko.setText(o.getNazwisko());
    }

    void addController(Controler kontroler) {
        
        Osoba nowaOsoba = new Osoba();
        nowaOsoba.setImie(imieField.getText());
        nowaOsoba.setNazwisko(nazwiskoField.getText());
        
        kontroler.updateModel(nowaOsoba);

        button.addActionListener(kontroler);
    } 

}
public class Model extends java.util.Observable  {
    
    private Osoba o;

    public Model() { }
    
    public void setValue(Osoba o) {
		this.o = o;
		setChanged();
		notifyObservers(o);
        }
    
}
public class Controler implements java.awt.event.ActionListener{

    Model model;
    View widok;
    
    Controler() {	
	}
    
    public void addModel(Model m){
		this.model = m;
	} 
        
    public void addView(View v){
		this.widok = v;
	}
    
    public void updateModel(Osoba o){
		model.setValue(o);
	}
    
    @Override
    public void actionPerformed(ActionEvent e) {
 
    }
    
}
public class MVCForm {

    public static void main(String[] args) {
             
        Model model = new Model();
        View widok = new View();
        
        model.addObserver(widok);	
        
        Controler kontroler = new Controler();
        kontroler.addModel(model);
        kontroler.addView(widok);        
        
        Osoba o = new Osoba();
        o.setImie("xxx");
        o.setNazwisko("xxx");

        widok.addController(kontroler);
    }  
}
0

moze repaint po aktualizacji widoku

0

Poprawiłem, dodałem w widoku funkcje pobierającą dane z interfejsu:

Osoba getData (){
        Osoba o = new Osoba();
        o.setImie(imieField.getText());
        o.setNazwisko(nazwiskoField.getText());
        return o;
    }

a w kontrolerze dodalem funkcje która pobiera te dane z widoku i wstawia do modelu:


@Override
    public void actionPerformed(ActionEvent e) {
        Object o = widok.getData();
        model.setValue(widok.getData());
    }

Pytanie do osób znających mvc, czy to jest zgodne "ze sztuką". Zadziałac zadziałało ale czy to jest prawidłowa medodyka mvc?

0

Witam
Nie jestem ekspertem ale według mnie za dużo kodu w main :)
pozdr

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