Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

panox

[Resolvido] Enviando dados para um JFrame já aberto

Recommended Posts

Olá, estou fazendo uma consulta que funciona da seguinte maneira :

 

A partir de um JFrame principal, eu chamo um novo Frame para a pesquisa do cliente da seguinte maneira :

 

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        PesquisaClientePedido pcp = new PesquisaClientePedido();
        pcp.setVisible(true);
        //this.setVisible(false);
    }                    

 

Já no outro Frame, após realizar a consulta, ele manda os resultados para uma JList, e após dar um duplo clique no item desejado(Nome do cliente nesse caso), ele pega o valor e retorna para um textfield do Frame anterior.

 

O meu problema é que não estou conseguindo faze-lo sem abrir uma nova instância do Frame, alguem saberia me dizer a melhor maneira de recuperar estes dados ?

 

 

Abraços,

Enrico.

Compartilhar este post


Link para o post
Compartilhar em outros sites

<_< No seu outro tópico eu expliquei como chamar um dps voltar p anterior sem criar novas instancias, usando a mesma lógica você pode criar um método p setar o valor no textField e chamar quando estiver fechando o pesquisa de cliente

 

link: http://forum.imasters.com.br/index.php?/topic/406177-alterar-o-defaultcloseoperation-de-um-jframe/

 

Abraço :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe pelo tópico desnecessário Giovanni, eu não pensei que o anterior pudesse me ajudar neste caso também. Mas ainda estou tendo um problema na lógica de tudo para fazer o método para recuperar valores no textField do frame principal.

 

Dessa vez estou usando ambos frames como você descreveu no tópico anterior.

 

FramePrincipal(Chamando o frameSecundario):

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        PesquisaClientePedido pcp = new PesquisaClientePedido(CadastroPedido.this);
        pcp.setVisible(true);
        setVisible(false);
    }    

FrameSecundario:

public class PesquisaClientePedido extends javax.swing.JFrame {    private JFrame parent;    public PesquisaClientePedido(JFrame p) {        initComponents();        this.parent = p;    }    public PesquisaClientePedido() {        initComponents();    }    //Fechando o frame e voltando para o principal sem criar uma nova instancia    private void formWindowClosing(java.awt.event.WindowEvent evt) {        parent.setVisible(true);        dispose();    }    //Evento de DblClick na list, que deveria levar os dados para o framePrincipal    private void ltClientesMouseClicked(java.awt.event.MouseEvent evt) {                                                //evento com clique duplo        if(evt.getClickCount() == 2){            String nomeCliente = this.ltClientes.getSelectedValue().toString();            Clientes c = new Clientes();            c.consultaClientesPedido(nomeCliente);            String codigoCliente = c.rsCodigoCliente.toString();            //CadastroPedido cp = new CadastroPedido();            this.setVisible(false);            //cp.CompletaCliente(nomeCliente, codigoCliente);            parent.setVisible(true);            //Os comentarios acima indicam o jeito que estou fazendo com instancia.        }    }

 

Apenas não entendi como acessar os objetos do framePrincipal pelo frameSecundario, ja que parent. nao me tras nenhum dos objetos do principal.

 

Desde ja, obrigado pela atenção

 

Abraços. ^_^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, ja tamos quase la, imagine que o componente que você deseja atualizar do frame princial é "nomeField" do tipo JTextField, você só precisa disponibilizar um set no frame principal mais ou menos assim:

public FramePrincipal extends JFrame {
    // outros atributos
    private JTextField nomeField;

    public FramePrincipal() {
        // construtor
    }

    // o metodo set que sera utilizado p colocar os dados no campo
    public void setNomeFiled(String conteudo) {
         nomeField.setText(conteudo);
    }

}

agora no frame PesquisaClientePedido usando parent você faz o seguinte:

public class PesquisaClientePedido extends javax.swing.JFrame {
    private JFrame parent;

    public PesquisaClientePedido(JFrame p) {
        initComponents();
        this.parent = p;
    }

    public PesquisaClientePedido() {
        initComponents();
    }

    //Evento de DblClick na list, que deveria levar os dados para o framePrincipal
    private void ltClientesMouseClicked(java.awt.event.MouseEvent evt) {                                        
        //evento com clique duplo
        if(evt.getClickCount() == 2){
            // retirei parte do código só p focar no principal a alterar
            // antes de chamar o frame anterior
            FramePricinpal frame = (FramePrincipal)parent;
            frame.setNomeField(CONTEUDO_AQUI); // atribui la o valor desejado ao campo
            frame.setVisible(true);  // agora torna ele visivel
        }
    }                

É isso aí... qlqr coisa é só postar..

t+ http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pô, muito obrigado mesmo giovanni, funcionou direitinho...a respeito do método que você utilizou, eu tinha um identico, mas precisava da instancia para usá-lo

 

    public void CompletaCliente(String nome, String codigo){
        txCodigoCliente.setText(codigo);
        txNomeCliente.setText(nome);
    }

Muito obrigado pela ajuda.

 

Grande abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.