Auf Thema antworten

Warum nicht? Du brauchst einfach a) ein Interface für das Model. Das hat Methode(n) zum Registrieren von Observern (aka LIstener in Swing) und b) eine View, die eben einen Listener registriert. Die Implementierung des Models muss lediglich die Methode des Listeners aufrufen.


Du könntest z. B. auch einfach etwas machen wie

[code=Java]

interface UpdateListener {

    void updated();

}   

[/code]

und im Model

[code=Java]

private List<UpdateListener> listeners = new ArrayList<>();


public void addUpdateListener(UpdateListener listener) { listeners.add(listener); }

protected void fireUpdated() {

    for (UpdateListener listener : listeners) {

        listener.update();

    }

}

[/code]


Wenn immer sich etwas am Model geändert hat, ruft das Model halt [icode]fireUpdated[/icode] auf.


Die View registriert einfach einen UpdateListener. Die Implementierung macht einfach ein repaint.

[code=Java]

model.addUpdateListener( () -> repaint() );

[/code]



Oben