Dúvidas no modelo MVC - Implementar o controler (listeners)

Pessoal, possuo uma dúvida de como implementar os listeners do controller, considerando este exemplo:

modelo

public class Pessoa { private String nome; private int idade; public void setNome(String nome) { this.nome = nome; } public String getNome() { return (nome); } public void setIdade(int idade) { this.idade = idade; } public int getIdade() { return (idade); } }

visão

[code]import java.awt.;
import java.awt.event.
;
import javax.swing.;
import javax.swing.event.
;

public class MyPanel extends JPanel {
private JButton jcomp1;
private JTextField jcomp2;
private JTextField jcomp3;
private JLabel jcomp4;
private JLabel jcomp5;

public MyPanel() {

    jcomp1 = new JButton ("Gravar");
    jcomp2 = new JTextField (5);
    jcomp3 = new JTextField (5);
    jcomp4 = new JLabel ("NOME:");
    jcomp5 = new JLabel ("IDADE:");


    setPreferredSize (new Dimension (481, 97));
    setLayout (null);


    add (jcomp1);
    add (jcomp2);
    add (jcomp3);
    add (jcomp4);
    add (jcomp5);


    jcomp1.setBounds (370, 70, 100, 20);
    jcomp2.setBounds (120, 5, 350, 25);
    jcomp3.setBounds (120, 40, 350, 25);
    jcomp4.setBounds (15, 5, 100, 25);
    jcomp5.setBounds (15, 40, 100, 25);
}


public static void main (String[] args) {
    JFrame frame = new JFrame ("MyPanel");
    frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().add (new MyPanel());
    frame.pack();
    frame.setVisible (true);
}

}[/code]

controller??

Alguém poderia me dar um exemplo de classe controladora para esta situacao? (funcionar o gravar)

Obrigado!!!

Bom eu normalmente crio uma classe que intermedia o acesso ao banco de dados por exemplo, verificando então, se os dados enviados pela view estão corretos para o acesso ao banco de dados.

Tenho vários controllers em minhas aplicações, ja que tenho várias views (WEB, Desktop)

Se a sua aplicação não é multi-banco, ou seja, você não usa persistência de dados, procure implementar o DAOFactory que ajuda e muito.

Flwww

Ai que tá amigo, minha dúvida está, em ONDE e COMO implementar. Eu devo criar uma nova classe listener separada da view? mas como a listener vai conhecer os dados da view dai? poderia me dar um exemplo ?

Obrigado!

Você pode criar uma classe (PessoaController) que teria o método incluir que recebe como parâmetro um objeto Pessoa, então você verifica se os dados estão corretos e então prosseguir com a operação de inclusão no banco de dados, caso seja encontrada alguma inconsistência você pode tratar o erro ou até mesmo retornar o erro à view, mas ai você terá que retornar o erro de uma forma elegante a view.
Geralmente utilizo um List com o código do erro e a descrição do erro.

então os listeners ficariam NA VIEW ? e o controller apenas os daos, etc ? em TESE, OS EVENTOS ficariam na classe view???

Os eventos da view, você trata na view, agora os dados que irão para um banco de dados por exemplo, então ai você tem que verificar as inconsistências, para não permitir erros no banco de dados por exemplo.

Flwww

Eu normalmente utilizo a camada C (Controller) para a manipulação dos dados dentro do banco.

Por exemplo:


class PessoaDAO { 

    public Pessoa selectByName(String name) {
        // todo o codigo que captura os dados do banco
        Pessoa model = new Pessoa();
        model.setName(rs.getString("name"));
        // etc etc etc
        return model;
    }

    // outros métodos de manipulação de banco de dados

}