Estou trabalhando em um aplicação que preciso fazer lançamentos de faturas ao longo do mês. Estes lançamentos vão sendo guardados num JTable, e conforme vão sendo inseridos lançamentos de uma mesma seguradora, ele deve “resumir” isso, ou seja, juntar os lançamentos iguais e somar seus valores! O que acontece é que tenho um table para todos os lançamentos e outra para os resumidos.
Minha lógica está assim:
Botao adicionar:
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {
if (dia.getText().isEmpty() || seguradora.getSelectedIndex() == 0 || comissao.getText().isEmpty() || banco.getText().isEmpty()) {
JOptionPane.showMessageDialog(this, "Os campos marcados com * sao obrigatorios!", "Atencao", JOptionPane.WARNING_MESSAGE);
} else {
codigo++;
Lancamento ob = new Lancamento();
ob.setIdlanc(codigo);
ob.setDia(dia.getText());
ob.setSeguradora(seguradora.getSelectedItem().toString());
ob.setComissao(comissao.getText());
ob.setIrrf(irrf.getText());
ob.setBanco(banco.getText());
inserirLancamentos(ob);//Insere na tabela de lancamentos
inserirResumidos(ob);//Insere na tabela Resumidos
ajustarColunas();
limparCampos();
dia.requestFocus();
}
}
O problema é que depois que ele verifica se o lancamento ja existe e junta com o existente, ele coloca esse objeto “Ob”, na tabela Lancamentos tbm! Estou usando modelos que eu mesmo fiz em ambas tabelas, nenhum objeto destes é static! O que pode estar acontecendo?
Obs.: não sei se fui claro
Estou trabalhando em um aplicação que preciso fazer lançamentos de faturas ao longo do mês. Estes lançamentos vão sendo guardados num JTable, e conforme vão sendo inseridos lançamentos de uma mesma seguradora, ele deve “resumir” isso, ou seja, juntar os lançamentos iguais e somar seus valores! O que acontece é que tenho um table para todos os lançamentos e outra para os resumidos.
Minha lógica está assim:
Botao adicionar:
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {
if (dia.getText().isEmpty() || seguradora.getSelectedIndex() == 0 || comissao.getText().isEmpty() || banco.getText().isEmpty()) {
JOptionPane.showMessageDialog(this, "Os campos marcados com * sao obrigatorios!", "Atencao", JOptionPane.WARNING_MESSAGE);
} else {
codigo++;
Lancamento ob = new Lancamento();
ob.setIdlanc(codigo);
ob.setDia(dia.getText());
ob.setSeguradora(seguradora.getSelectedItem().toString());
ob.setComissao(comissao.getText());
ob.setIrrf(irrf.getText());
ob.setBanco(banco.getText());
inserirLancamentos(ob);//Insere na tabela de lancamentos
inserirResumidos(ob);//Insere na tabela Resumidos
ajustarColunas();
limparCampos();
dia.requestFocus();
}
}
O problema é que depois que ele verifica se o lancamento ja existe e junta com o existente, ele coloca esse objeto “Ob”, na tabela Lancamentos tbm! Estou usando modelos que eu mesmo fiz em ambas tabelas, nenhum objeto destes é static! O que pode estar acontecendo?
Obs.: não sei se fui claro
Bom dia, em que momento você faz a verficação se o lançamento existe?
M
mt_thesame
Diego, valew pela resposta!
Faço na hora de inserir o objeto no modelo da tabela Resumidos:
public void addRow(Lancamento l) {
boolean resumiu = false;
System.out.println("Resum: "+l.getSeguradora()+" - "+l.getBanco());
for (int i = 0; i < this.resum.size(); i++) {
if (l.getSeguradora().equals(this.resum.get(i).getSeguradora())) {
l.setComissao(l.getComissao() + this.resum.get(i).getComissao());
l.setIrrf(l.getIrrf() + this.resum.get(i).getIrrf());
l.setBanco(l.getBanco() + this.resum.get(i).getBanco());
this.resum.set(i, l);
resumiu = true;
break;
}
}
System.out.println("Resum: "+l.getSeguradora()+" - "+l.getBanco());
if (!resumiu) {
this.resum.add(l);
int linha = resum.size() - 1;
fireTableRowsInserted(linha, linha);
}
}
O que esta me deixando loco, é que cada JTable usa seu proprio Model, não era pra isso acontecer! E verifico no modelo de resumidos, como que o Modelo de Lancamentos (que é outro model), pega isso?? não dá pra entender!!!
D
danilovicente
Você passa o mesmo objeto para a mesma classe que faz a mesma verificação no mesmo objeto passado. Cria 2 métodos distintos para cada ação. Aí sim irá salvar da forma que você quer.
M
mt_thesame
Na verdade, eu já fiz isso! Olha la no botão onde add nas tabelas, que eu crio o objeto, adiciono o conteudo nele e passo para os métodos responsáveis em adicionar no modelo, que sao estes:
inserirLancamentos(ob);//Insere na tabela de lancamentos
inserirResumidos(ob);//Insere na tabela Resumidos
ai no modelo de lancamentos, apenas adiciono no ArrayList, e no modelo de resumidos, faço a verificação antes de adicionar!
D
danilovicente
Na verdade, eu já fiz isso! Olha la no botão onde add nas tabelas, que eu crio o objeto, adiciono o conteudo nele e passo para os métodos responsáveis em adicionar no modelo, que sao estes:
inserirLancamentos(ob);//Insere na tabela de lancamentos
inserirResumidos(ob);//Insere na tabela Resumidos
ai no modelo de lancamentos, apenas adiciono no ArrayList, e no modelo de resumidos, faço a verificação antes de adicionar!
posta esses 2 métodos aí também, para dar uma olhada.
M
mt_thesame
private void inserirLancamentos(Lancamento ob) {
lcr.lm.addRow(ob);//"lcr" é um objeto de uma classe que está controlando os dados, como se fosse um CRUD
tLanc.setModel(lcr.lm);
}
private void inserirResumidos(Lancamento ob) {
lcr.rm.addRow(ob);
tResum.setModel(lcr.rm);
}
Eu estava fazendo isso dentro do botao, resolvi separar assim, pq pensei que fosse este o problema!