Swing e MVC

2 respostas
J

galera estou com dificuldade em usar mvc com swing, na verdade quero deixar tudo bem separado as funções de cada um…to colocando um exemplo simples, gostaria de saber se é ± isso, caso contrário me ajudem…
imaginem uma tela de cadastro que vai salvar no banco…coloquei 2 campos pra facilitar…o que quero é entender a idéia.
view:

public class Tela extends JFrame{
   //.....
     Controller controller;
     JPanel panel = new JPanel();  
     panel.setLayout(new GridLayout(2, 3)); 
     JTextField nome = new JTextField();
    JTextField idade = new JTextField();
   JButton cadastrar = new JButton("1");
 
              //acao do botao
             cadastrar.addActionListener(new ActionListener(){
                   public void ActionPerformed(ActionEvent evt){
                   controller.CadastrarUsuario(nome.getText(), idade.getText());
               }
           }
          
}

classe controller

public class Controller{
      //...
        Usuario usuario;
        Model model;
   public void CadastrarUsuario(String nome, String idade){
      usuario = new Usuario();
      usuario.setNome(nome);
      usuario.setIdade(idade);
      model = new Model();
      model.salvar(usuario);
    }
}

Modelo

public class Modelo{
     public boolean salvar(Usuario usuario) {
        minhaDao,gravar(usuario);      
     }
}

pessoal to tentando aplicar separação de responsabilidade, deve estar errado, mas se puderem me ajudar como ficaria esse exemplo seguinte o MVC, o que está errado…

Minha dúvida também é, se ocorrer tudo ok e gravar no banco, como faço pra exibir uma mensagem ou uma popup que foi cadastrado, na verdade como eu sei fazer, de onde vai partir a execução pra mostrar essa mensagem, seria tipo chamar um método na view que recebe uma string com a mensagem, e nesse metodo eu mando exibir um JDialog…seria assim?

obrigado a todos.

2 Respostas

sergiotaborda

O seu código não está errado. Tem uma boa separação de responsabilidade.
A mensagem deve ser emitida pelo controlador. É ele que sabe se deu certo ou não. O modelo não pode ser porque ele ñ sabe que “swing” existe e o “swing” por si só não faz nada.

P.S. O seu método cadastrarUsuário poderia estar mais coerente se vc declarasse Ususario e modelo dentro do método e não fora. Lembre-se, o controlador deve ser stateless ( sem estado). Se tiver algum estado ,ele deve ser generico e não depender das chamadas aos métodos. ( por exemplo, um atributo modelo faz sentido, mas um atributo usuário não )

J

sergiotaborda:
JavaTux:

Minha dúvida também é, se ocorrer tudo ok e gravar no banco, como faço pra exibir uma mensagem ou uma popup que foi cadastrado, na verdade como eu sei fazer, de onde vai partir a execução pra mostrar essa mensagem, seria tipo chamar um método na view que recebe uma string com a mensagem, e nesse metodo eu mando exibir um JDialog…seria assim?

O seu código não está errado. Tem uma boa separação de responsabilidade.
A mensagem deve ser emitida pelo controlador. É ele que sabe se deu certo ou não. O modelo não pode ser porque ele ñ sabe que “swing” existe e o “swing” por si só não faz nada.

P.S. O seu método cadastrarUsuário poderia estar mais coerente se vc declarasse Ususario e modelo dentro do método e não fora. Lembre-se, o controlador deve ser stateless ( sem estado). Se tiver algum estado ,ele deve ser generico e não depender das chamadas aos métodos. ( por exemplo, um atributo modelo faz sentido, mas um atributo usuário não )

no caso mesmo pra validar se tem campo vazio, no caso tem que ser na controller? se for então a controller vai instanciar a tela, e dá um getText em cada componente pra ver se está vazio, estou certo?

colocar este método pra validar campo vazio na propria view, está errado?

Criado 25 de maio de 2008
Ultima resposta 25 de mai. de 2008
Respostas 2
Participantes 2