Sobre MVC: Como o swing faz?

Minha dúvida é: como o swing faz para que, quando o model do componente sofre uma alteração, sua view sofre também? Por exemplo:

DefaultTableModel model = new DefaultTableModel(dados, titulos);
JTable view = new JTable(model);

Por ser instanciado desse jeito, acredito que o somente o view tem uma referência ao model, e o model não tem ao view. Mas se eu, em algum ponto de meu código colocar:

Outra linha vai ser criada no view sem que eu precise mandar atualizá-lo. Mas se o model não tem uma referencia ao view para avisá-lo “mudei, se atualiza aí”, como o view sabe que o model foi alterado?

Thiago, acho que você esta confundindo conceito de MVC. Na verdade o Swing é um Framework utilizado para criar e gerenciar a interface gráfica da aplicação(GUI ou UI), ou seja, dentro da arquitetura MVC ele apenas representa a View da aplicação (V).

O DefaultTableModel é um componente da View e não do Model da arquitetura. Por ser um componente da view o DefaultTableModel atualiza a tela assim que é adicionada uma nova coluna nele.

Esta possivelmente não será a melhor definição de camada de modelo, mas ela é responsável por modelar os dados do sistema, um objeto VO ou um Bean pode ser um exemplo de objeto da camada de modelo(me corrijam se eu estiver errado). Já conheci pessoas que discordavam desse conceito, mas eu particularmente sempre trabalhei assim com o Swing: Model - Objetos VOs(Value Object) fazendo o mapeamento das tabelas com Hibernate e Annotations; Controller - Objetos DAOs(Data Access Object) fazendo o acesso ao banco e BOs(Businness Object ) efetuando as regras de negócio, o “controle” das transações e acesso aos DAOs; View - JFrame da aplicação e objetos View (JFrames, JDialogs ou, simplesmente, JPanels que repesentam cada tela do Sistema).

Não é bem isso. O Swing implementa um modelo que se inspira no MVC2 sim. O Model é SIM o modelo de dados dos componentes e o componente (JButton, JTable etc) é a sua view e controler (isso em modos gerais). Ele utiliza-se de eventos para saber quando o model sofre alterações bem como a view sofre interação com o usuário e então fazer as devidas alterações no model. De uma forma simplificada é isso. Detalhes em http://java.sun.com/products/jfc/tsc/articles/architecture/.

[]'s

Valeu hmichel!