Além disto, tendo em vista que ClienteConsulta será usada posteriormente, estou fazendo certo apenas usar o this.hide nela? Percebo que após este hide a tela demora um pouco para sumir.
Por favor, evite destaques em LETRAS MAIÚSCULAS no título.
V
vicentedepaula
Olá ViniGodoy,
Estudei o código que vc disponibilizou no link indicado. Não estou conseguindo ter acesso ao método público que trará o objeto Cliente vindo da JTable. Vejamos:
publicclassPedidoVendaCadastroextendsjavax.swing.JInternalFrame{privatestaticPedidoVendaCadastroinstancia;privatestaticJDesktopPanearea_trabalho;privateJInternalFramejanelaInterna;privatePedidoVendaCadastro(){initComponents();}publicstaticsynchronizedPedidoVendaCadastrogetInstancia(JDesktopPanearea){if(instancia==null){instancia=newPedidoVendaCadastro();PedidoVendaCadastro.area_trabalho=area;}returninstancia;}...privatevoidtxtRazaoSocialClienteActionPerformed(java.awt.event.ActionEventevt){this.janelaInterna=ClienteConsulta.getInstancia(area_trabalho);if(this.janelaInterna.getParent()!=area_trabalho){area_trabalho.add(janelaInterna);}this.janelaInterna.show();area_trabalho.moveToFront(this.janelaInterna);this.cliente=this.janelaInterna.getClienteSelecionado();// a bronca está aqui. }...
Na última linha ( this.cliente = this.janelaInterna.getClienteSelecionado(); ) , o NetBeans aponta o seguinte erro :
cannot find symbol
symbol: method getClienteSelecionado()
location: variable janelaInterna of type JInternalFrame
Como resolver isto ? Abaixo a classe ClienteConsulta:
publicclassClienteConsultaextendsjavax.swing.JInternalFrame{privatestaticfinalintCODIGO=0;privatestaticfinalintLOJA=1;privatestaticfinalintRAZAO_SOCIAL=2;privatestaticfinalintNOME_FANTASIA=3;privatestaticfinalintBAIRRO=4;privatestaticfinalintCIDADE=5;privatestaticfinalintUF=6;privatestaticfinalintFILIAL_FATURAMENTO=7;privatestaticfinalintCGC=8;privatestaticfinalintSEGMENTO=9;privatestaticfinalintSALDO_TIT_ABERTOS=10;privatestaticfinalintSALDO_TIT_ATRASADOS=11;privatestaticClienteConsultainstancia;privatestaticStringQUERY_CONSULTA_CLIENTE="";privatestaticStringconteudo;privatestaticJDesktopPanearea_trabalho;privateList<Cliente>lista_clientes;privateClienteTableModelmodelo_tabela;privateClienteclienteSelecionado;privateClienteConsulta(){initComponents();}publicstaticClienteConsultagetInstancia(JDesktopPanearea){if(instancia==null){instancia=newClienteConsulta();ClienteConsulta.area_trabalho=area;instancia.runQueryConsulta();}returninstancia;}...publicClientegetClienteSelecionado(){returnclienteSelecionado;}...privatevoidtabResultadoMouseClicked(java.awt.event.MouseEventevt){if(tabResultado.getSelectedColumn()==RAZAO_SOCIAL){System.out.println("Cliente selecionado: "+modelo_tabela.getCliente(tabResultado.getSelectedRow()));//apresentou com sucesso!this.clienteSelecionado=modelo_tabela.getCliente(tabResultado.getSelectedRow());this.setVisible(false);}if(tabResultado.getSelectedColumn()==CODIGO){System.out.println("Cliente selecionado: "+modelo_tabela.getCliente(tabResultado.getSelectedRow()));//apresentou com sucesso!this.clienteSelecionado=modelo_tabela.getCliente(tabResultado.getSelectedRow());}}...
V
vicentedepaula
Tô chegando perto da solução! Só tá faltando atualizar os jtextfields de PedidoVendaCadastro (o primeiro jFrame) com os atributos do cliente escolhido.
Lá vai o compartilhamento:
Consegui transportar o objeto cliente do JTable para o atributo cliente do outro jframe ( PedidoVendaCadastro ). Segue a modificação realizada no fonte ClienteConsulta:
private void tabResultadoMouseClicked(java.awt.event.MouseEvent evt) {
if (tabResultado.getSelectedColumn() == RAZAO_SOCIAL) {
System.out.println("Cliente selecionado: " + modelo_tabela.getCliente(tabResultado.getSelectedRow()));
PedidoVendaCadastro.getInstancia(area_trabalho).setCliente(modelo_tabela.getCliente(tabResultado.getSelectedRow())); // esta foi a solução
this.setVisible(false);
}
if (tabResultado.getSelectedColumn() == CODIGO) {
System.out.println("Cliente selecionado: " + modelo_tabela.getCliente(tabResultado.getSelectedRow()));
PedidoVendaCadastro.getInstancia(area_trabalho).setCliente(modelo_tabela.getCliente(tabResultado.getSelectedRow())); // esta foi a solução
}
}
Vinculei os jtextfield de PedidoVendaCadastro com os atributos do objeto cliente desta mesma classe, via netbeans. Porém, não estão sendo atualizados.
Como devo proceder neste caso ?
V
vicentedepaula
Resolvido.
Ficou da seguinte forma (atentar para o comentário da solução encontrada):
...
private void tabResultadoMouseClicked(java.awt.event.MouseEvent evt) {
if (tabResultado.getSelectedColumn() == RAZAO_SOCIAL) {
this.clienteSelecionado = modelo_tabela.getCliente(tabResultado.getSelectedRow());
PedidoVendaCadastro.getInstancia(area_trabalho).getPv().setCliente(this.clienteSelecionado);
PedidoVendaCadastro.getInstancia(area_trabalho).atualizaCamposCliente(); //adicionada esta linha! solucionou a atualização dos jtextfields
PedidoVendaCadastro.getInstancia(area_trabalho).getComboFormaPagto().requestFocus();
this.setVisible(false);
}
...
}
...
e foi criado o método chamado acima ( atualizaCamposCliente ) em PedidoVendaCadastro:
public void atualizaCamposCliente() {
this.txtCodigoLojaCliente.setText(this.pv.getCliente().getCodigo() + "-" + this.pv.getCliente().getLoja());
this.txtNomeFantasiaCliente.setText(this.pv.getCliente().getNome_reduzido());
this.txtRazaoSocialCliente.setText(this.pv.getCliente().getNome_completo());
this.txtSegmento.setText(this.pv.getCliente().getSegmento());
this.txtTabelaPreco.setText(this.pv.getTabela_preco());
if (this.pv.getFrete().equalsIgnoreCase("F")) {
this.radioFreteCIF.setSelected(false);
this.radioFreteFOB.setSelected(true);
} else {
this.radioFreteCIF.setSelected(true);
this.radioFreteFOB.setSelected(false);
}
this.txtDescricaoCondPagto.setText(this.pv.getCondicaoPagamento().getDescricao());
switch (this.pv.getForma_pagto()) {
// "COBRANÇA ANEXA", "CHEQUE", "DEPÓSITO"
case "CA":
this.comboFormaPagto.setSelectedIndex(0);
case "CH":
this.comboFormaPagto.setSelectedIndex(1);
case "DEP":
this.comboFormaPagto.setSelectedIndex(2);
}
}