Trocar informações entre Jframes

11 respostas
vinidiax

[color=black] tenho um JFrame para cadastro de produtos, e tenho uma opção em um campo caso o usuário nao saiba o codigo do produto ele vai consultar o codigo, o usuario ira digitar o nome do produto e vai aparecer os produtos em uma tabela, ele ira selecionar a linha do respectivo produto e ao apertar enter ele jogue as informações para o outro Jframe, alguem sabe como fazer?[/color]

11 Respostas

F

cara…nau msei se eh isso mas ve se é o que vc quer:

campoCodigoFrame.setText(tabelaProdutos.getValueAt(LinhaSelecionada, ColunaCodigo));

onde campoCodigoFrame, é o cmapo do jFrame que vai receber o codigo do produto, tabelaProdutos, a tabela onde estão os produtos cadastrados.

ve se é isso…

F

Í me esquecendo vc quer que seja setado qd pressionado “ENTER”…vc adiciona a tabela o seguitne codigo

tabelaCodigo.addActionListener( new ActionListener(){
        public void actionPerformed(ActionEvent e){
    campoCodigoFrame.setText(tabelaCodigo.getValueAt(LinhaSelecionada, ColunaCodigo));
}
});
vinidiax

o codigo para gerar a tabela e a função para apertar o enter tbm ja tenho, isso é tranquilo, o problema é o seguinte,
a tabela que contem os produtos procurados esta no frame “x” e eu quero que as informações apareçam no frame “y”, nao estou conseguindo fazer essa troca de informações.

F

torna os componentes do frame “x” public static aih vc vai poder acessar os campos desse frame e acessá-los diretamente do frame y…

71C4700
Seguindo a ideia do caro amigo .... Mas eu sugeria que esta variavel ficasse mais ou menos assim
PrimeiroFrame extends JFrame{

}

SegundoFrame extends JFrame{
// Manipula o array ou variavel em outro local
}
E agora
public static ArrayList<String> vectorDeControle;
E voce manipula esta variavel em ambos Frames !
Fernando_Generoso_da

A melhor forma de resolver esse problema é criando um listener…

PegaProdutoSelecionadoListener…com um método setValue(int codigo), ou qualquer coisa parecida…

O teu primeiro frame implementa esse listener(o listener é uma interface…) e no método setValue, o valor que vier, seja um int, ou seja qulaquer coisa, tu define no teu cadastro.

no segundo frame tu cria um método chamado addPegaProdutoSelecionadoListener…e nesse método tu recebe os listeners (crie um list de listeners o tipo PegaProdutoSelecionadoListener)…aí no segundo frame, tu trabalha os eventos de tabela…quando der dois cliques, tu faz um for em teus listeners, passando pelos métodos setValues, e passando a variavel que tu quiser…assim, todos os frames que implementam esse listener vai receber esse valor.

qualquer coisa, de uma olhada no pattern Observer.

Fernando

Fernando_Generoso_da

Só complementando…

no primeiro frame, tu faria assim: frame2.addPegaProdutoSelecionadoListener(this), registrando o primeiro frame como observador no segundo frame, para receber qualquer alteração que venha a ser feito no segundo frame…(que for implementada, claro).

71C4700

Fernando gostei muito de sua solução, teria algo simples implementado, para tirar o restante de minhas duvidas .
Como implementar a interface listeners , Qual ?
E este metodo a sua implementação ?

Fernando_Generoso_da

A interface listener é uma interface com um método…

Esse método vai receber um valor ( o código do produto, ou o objeto produto), tu que decide…

A implementação dele é simples…recebe esse objeto, e no teu frame 1, que é quem vai implementar esse método, essa interface…e popula teu cadastro com ele…

no segundo frame, que tu tem registrado o listener, quando for selecionado o produto, pega a lista de listeners, faz um for nele e vai setando o valor…por exemplo…se no teu list, 4 frames estao “escutando” o teu segundo frame…

listener1.setValue(…)

listener2.setValue(…)

listener3.setValue(…)

listener4.setValue(…)

assim, todos os frames q estao “escutando” recebem esse valor que tu está passando…

Fernando

71C4700

Agradeço
Fernando pela ajuda !!!

vinidiax

testei alguns codigos hoje e consegui fazendo declarando o campo onde iria o codigo que eu queri no frame1 como public e static e no frame2 setei o que queria atraves do frame1.codigo.settext() funcionou corretamente.
alguem tem um exemplo sobre listener?
obrigado pela ajuda.

Criado 18 de agosto de 2008
Ultima resposta 19 de ago. de 2008
Respostas 11
Participantes 4