Acessar valor de um JText utilizando design patterns (qual o procedimento)

9 respostas
_filipe

Olá,

Estou desenvolvendo um sistema, e estou utilizando o pattern MVC, ou tentando utilizar este pattern.

Ja programo ha algum tempo OO, mas para web. Estou encontrando algumas dificuldades para aplicações desktop com JAVA.

Seguinte:
Tenho um formulário de cadastro, com N campos (um formulário de cadastro de clientes por exemplo, com campo nome, telefone, email e etc).

Então, subentende-se que eu tenha 3 classes para manipulção e tratamento de dados, estou utilizando Value Objects, Business Objects e Data Access Objects …

Criei o form (JFrame) de cadastro no package default, e as classes que tratam os eventos de mouse em outro package.

Como eu faço para acessar os valores dos campos do formulario para iniciar a passagem do objeto Cliente entre camadas antes de inserir no banco.

Exemplo:
Eu tentei criar um método dentro do JFrame chamado getClienteFromPanel(); que me retornaria um bean Cliente assim q o botão Salvar fosse clicado.
Depois, adicionei um mouseListener ao botão “salvar”.:
btnSalvar.addMouseListener(new Events.BtnSalvar(this.getClienteFromPanel());

Só que ele não executa a função na hora em que o mouse é clicado e sim na hora que eu adiciono o listener no botão …

Em suma, como eu faço para acessar os valores dos Texts de um JFrame atraves de outra classe, sem passar o JFrame por parametro de método.

[]'s

9 Respostas

Rodrigo_Vieira_Pinto

JText quer dizer JTextField?

Então tenta assim:

JTextField text = new JTextField();
String conteudo = text.getText();
_filipe

Ola,

Obrigado pela resposta, mas não é isso não fera …

Acessar o valor do JTextField dentro do JFrame eu sei como é …

o problema é criar um Bean, um Value Object de acordo com os dados informados no JTextField, e depois transportar este Objeto entre camadas até chegar ao Model (DAO) … releia o tópico, que voce vai entender qual é o meu problema!

[]'s

diego2005

Só um detalhe, pelo que eu sei, MVC não é um design pattern, e sim um architectural pattern.

Alguém me corrija caso eu esteja errado.

T+

diego2005

Acho que você teria que fazer assim:

btnSalvar.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { getClienteFromPanel(); // pra onde vai enviar isso? } });

T+

_filipe

Isso, desculpe, uma má colocação, é um padrão de arquitetura mesmo … mas que seja, qual seria a resolução da minha pergunta .

[]'s

diego2005

Não seria o que eu coloquei acima??? Ou não deu certo??

T+

_filipe

Ok, valeu Diego, mas o seguinte ...

no seu código:

btnSalvar.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent evt) {
         getClienteFromPanel(); // pra onde vai enviar isso?
     }
 });

Eu instancio um ActionListener no momento em que vou adicionar um actionListener ao Botão, ok, até ai tudo bem.

Mas, como seria se eu tivesse uma classe de Eventos, que implementasse a interface ActionListener, e estivesse em outro package ?

Tipo, no meu Jframe eu tivesse o seguinte trecho de código:

btnSalvar.addActionListener(new Eventos.PerformedActionListener(this.getClienteFromPanel()));

private Cliente getClienteFromPanel()
{
      return new Cliente (this.txtNome.getText(), this.txtTelefone.getText());
}
e depois, em outro package (Eventos), eu tivesse a seguinte classe:
package Eventos;

public PerformedActionListener implements ActionListener { 

    private Cliente _cliente;

    public PerformedActionListener(Cliente c)
    {
          this._cliente = c;
    }

     public void actionPerformed(ActionEvent evt) {
            ClienteBO clienteBo = new ClienteBO(this._cliente);
             JOptionPane.showMessageDialog(null, this._cliente.getNome());

     }
 }

A principio, parece funcionar bem, porem ele primeiro vai executar a função getClienteFromPanel();, quando na verdade esse método deveria ser executado apenas quando eu clicasse no botão salvar

_filipe

Alguem pode me ajudar

_filipe

Desculpe o flood …

Continuo na duvida, se alguem puder ajudar …

Criado 14 de agosto de 2007
Ultima resposta 16 de ago. de 2007
Respostas 9
Participantes 3