[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]
Trocar informações entre Jframes
11 Respostas
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…
Í 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));
}
});
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.
torna os componentes do frame “x” public static aih vc vai poder acessar os campos desse frame e acessá-los diretamente do frame y…
PrimeiroFrame extends JFrame{
}
SegundoFrame extends JFrame{
// Manipula o array ou variavel em outro local
}
public static ArrayList<String> vectorDeControle;
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
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).
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 ?
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
Agradeço
Fernando pela ajuda !!!
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.