SWING e MVC - Está correto?

6 respostas
I

E ai GUJianos... rsss

bom to estudando sobre desenvolvimento para Desktop...... e pesquise bastante sobre como separar Model, View e Controller..... porém achei poucos exemplos prático... e muito dizendo como deveria ser....... com base nisso tudo.... fiz um exemplo com base no que eu entendi, segue o codigo e mais abaixo as dúvidas.....

Model:
public class TesteMVCModel {

    private String nome;
    private String cargo;
    private String email;

//... getters & setters
}
View:(deixei apenas as partes importantes)
public class TesteMVCView extends javax.swing.JFrame {
    private TesteMVCController control = new TesteMVCController();
    private TesteMVCModel model;
    
/** Creates new form TesteMVCView */
    public TesteMVCView() {
        initComponents();
        if (model == null){
            model = new TesteMVCModel();
        }
	  this.atualizaView();
        this.setVisible(true);
    }

    private void btnOkActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnOkActionPerformed
        this.atualizaModel();
        String erro = control.salva(model);
        if (erro.equalsIgnoreCase("OK")) {
            JOptionPane.showConfirmDialog(this, "Salvo com sucesso");
        }else{
            JOptionPane.showConfirmDialog(this, erro);
        }
        this.atualizaView();
    }//GEN-LAST:event_btnOkActionPerformed

    private void btnLimpaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnLimpaActionPerformed
        this.atualizaModel();
        String erro = control.limpa(model);
        if (erro.equalsIgnoreCase("OK")) {
            this.model = new TesteMVCModel();
        }else{
            JOptionPane.showConfirmDialog(this, erro);
        }
        this.atualizaView();
    }//GEN-LAST:event_btnLimpaActionPerformed

    private void btnExitActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnExitActionPerformed
        this.dispose();
    }//GEN-LAST:event_btnExitActionPerformed

    private void atualizaModel() {
        this.model.setNome(txtNome.getText());
        this.model.setCargo(txtCargo.getText());
        this.model.setEmail(txtEmail.getText());
    }

    private void atualizaView() {
        txtNome.setText(model.getNome());
        txtCargo.setText(model.getCargo());
        txtEmail.setText(model.getEmail());
    }

}
Control:
public class TesteMVCController {

    public String salva(TesteMVCModel model) {
        String msg = "OK";
        if (model.getNome().equals("") || model.getCargo().equals("")) {
            msg = "Preencher Nome/Cargo";
        }
        if (model.getEmail().indexOf("@") == -1) {
            msg = "E-mail Inválido. Verifique.";
        }
        return msg;
    }

    public String limpa(TesteMVCModel model) {
        String msg = "OK";
//Verificações antes de limpar

        return msg;
    }
}

Agora as dúvidas:
1-Essa seria a maneira correta?
2-E se por acaso no Controle eu tivesse q mudar algo no Modelo, como devolveria isso para a View? (se vcs notarem apenas devolvo a msg de erro)

Muito obrigado pela ajuda!

6 Respostas

I

Pesando melhor no que eu tava fazendo vi que colocando a Variabel model no controle e tendo setters/getters nele… resolveria o item 2… assim a view acessaria o model atraves do Controle… asism control.getModel().getNome();

não sei se ta correto isso??.. será que teria problemas futuros utilizando está estrutura?

alguém pra me ajuda??

será que coloquei no forum errado… deveria ser no de engenharia?? se sim algum moderador move ele por favor.

Obrigado.

I

Poxa… ngm???

alguém sabe onde encontrar mais documentação sobre o assunto???

Obrigado.

arqueiros

Acredito que esteja correto…

eu recentemente construir uma aplicação desse tipo usando swt…eu seguir o artigo da revista javamazine que ensina em três ediçoes como fazer uma aplicação para desktop usando mvc e os design patterns dao e observer, o padrão observer aparentemente vc está implementando que é quando ocorrer alguma auteração na visão atualizar o modelo e qualquer alteração no model atualizar na view.

Caso não conheça de uma lida depois no padrão observer.

Se vc se interessar posso depois procurar postar aqui…

abs

I

opa… pelo menos 1 hehehe

li sobre Observer… mas não ta no padrão… hehehe

valeu pelos comentarios

PS:UNIFIEO??? ehhe estudei ai tbm rssss

I

Olá… Acredito que suas dúvidas podem ser esclarecidas neste tópico: http://www.guj.com.br/posts/list/129277.java
Tem bastante conteúdo… eu mesma estudei muito por ele. Até +… Tchau.

I

opa nao conhecia este tópico…vou olhar ele …
muito obrigado

Criado 31 de maio de 2010
Ultima resposta 3 de jun. de 2010
Respostas 6
Participantes 3