Boa noite
Como faz pra repetir o produto na jtable, pois quando eu cadastro novamente ele so aumenta a quantidade gostaria que criasse outra linha row com o mesmo produto.
Eu gostaria que repetisse essa linha do produto pois teria IMEI diferentes
Boa noite
Como faz pra repetir o produto na jtable, pois quando eu cadastro novamente ele so aumenta a quantidade gostaria que criasse outra linha row com o mesmo produto.
Eu gostaria que repetisse essa linha do produto pois teria IMEI diferentes
Faz uma cópia do objeto e adiciona novamente na lista.
Olha, o que você precisa fazer é não verificar na lista se o produto existe.
Ao invés de somar quantidade, deve inserir o produto em uma nova posição da lista que alimenta o table mode que está usando.
o codigo eh esse, nao consegui ver onde ele verifica para poder nao repetir
public void CadastrarPorNome() {
Item_compra_aparelhoDAO item_compraDAO = new Item_compra_aparelhoDAO();
Item_compra_aparelho item_compra = new Item_compra_aparelho();
if (jtNomeProduto.getText().equals("")) {
JOptionPane.showMessageDialog(this, "Preencha o campo nome.");
jtNomeProduto.requestFocus();
} else {
String id_venda = jlId.getText();
item_compra.setId_venda(Integer.parseInt(id_venda));
item_compra.setQtdade(Integer.parseInt(jtQtdade.getText()));
item_compra.setImei(jtImei.getText());
String nome_produto = jtNomeProduto.getText();
ProdutoDAO produtoDAO = new ProdutoDAO();
int id_produto = produtoDAO.buscaIdProduto(nome_produto);
item_compra.setId_produto(id_produto);
int qtdadejt = Integer.parseInt(jtQtdade.getText());
item_compraDAO.cadastrarItem_compra_aparelho(item_compra, qtdadejt);
listar();
}
}
public void listar() {
String id_venda = jlId.getText();
Item_compra_aparelhoDAO item_compraDAO = new Item_compra_aparelhoDAO();
itens_compra = item_compraDAO.listarItem_compra_aparelho(id_venda);
mostrarItem_compra(itens_compra);
}
public void mostrarItem_compra(List<Item_compra_aparelho> itens_compra) {
while (tmItem_compra.getRowCount() > 0) {
tmItem_compra.removeRow(0);
}
if (itens_compra.size() == 0) {
jlTotal.setText("0.0");
jlTotalGeral.setText("0.0");
jlValorDesconto.setText("0.0");
//
//jtDesconto.setText("0");
} else {
String[] campos = new String[]{null, null, null, null, null, null};
valor_total = 0;
for (int i = 0; i < itens_compra.size(); i++) {
tmItem_compra.addRow(campos);
tmItem_compra.setValueAt(itens_compra.get(i).getId_produto(), i, 0);
ProdutoDAO produtoDAO = new ProdutoDAO();
String[] vetor = produtoDAO.buscaProdutoPorId(itens_compra.get(i).getId_produto());
String nome = vetor[0];
Float valor_unitario = Float.parseFloat(vetor[1]);
tmItem_compra.setValueAt(nome, i, 1);
tmItem_compra.setValueAt(itens_compra.get(i).getImei(), i, 2);
tmItem_compra.setValueAt(itens_compra.get(i).getQtdade(), i, 3);
tmItem_compra.setValueAt(formatarFloat.format(valor_unitario), i, 4);
int qtdade = itens_compra.get(i).getQtdade();
subtotal = valor_unitario * qtdade;
tmItem_compra.setValueAt(formatarFloat.format(subtotal), i, 5);
valor_total = subtotal + valor_total;
total_geral = valor_total - desconto;
jlTotal.setText(formatarFloat.format(valor_total));
jlTotalGeral.setText(formatarFloat.format(total_geral));
}
}
}
Então, o que ocorre, aparentemente, é que você insere o item no banco, depois faz um select e obtém o item a ser apresentado, recriando toda a JTable.
Qual o problema disso?
Se você está tentando exibir os dados como aparecem em um cupom fiscal, não vai conseguir mesmo.
O ideal seria inserir um a um no banco de dados, somente após exibir na JTable.
gostaria q cadastrasse o produto em outra linha, o que acontece se o produto for o mesmo, ele nao adiciona outra linha, gostaria que adicionasse pq tem um atributo imei, pois este codigo muda eh como fosse a identidade.
mas estou cadastrando de 1 por 1, mas ele reconhece q ja tem e so altera a quantidade.
Oi Maks_Silva.
O que vc gostaria que repetisse, o Produto ou o Item_da_Venda?
Se for o Produto: vc pode implementar o metodo clone - na class de seu produto que cria novo produto e copia os dados para esse novo produto. Quando for retornado o metodo clone vc salva em seu banco de dados o produto seta no item_venda e salva item da venda.
Se for Item_da_Venda: Esse codigo teoricamente ja faz isso.
So uma sugestão- use padrão de arquitetura de software MVC.
Já tentou debugar?
Vai ser a forma mais rápida de vc entender o código e entender oq vc precisa fazer.
Eu gostaria q repetisse o mesmo produto.
So na tabela ou no banco de dados também?
nos dois