Olá gente,
Estou fazendo um programa para Bar com controle de estoque, com interface gráfica, porém sem banco de dados… Estou utilizando uma classe “bd” para armazenar os objetos de produtos, clientes, etc etc… No formulário “Venda no Balcão”, criei uma combo box que lista todos os produtos cadastrados, ao lado um campo para digitar a quantidade, um botão que adiciona o item a lista, que ao clicado, adicionará o Produto e a quantidade em uma jtable abaixo.
O problema é que quando eu clico para adicionar um produto, e o mesmo já existe na tablema, ele irá adicionar o mesmo produto em outra linha abaixo, e eu queria que ao invés disso, ele procure as linhas da jtable, se encontrar o produto, modifique a columa “quantidade” somando a qntd anterior com a nova quantidade inserida… Parece ser fácil, e já dei uma pesquisada aqui no forum, mas realmente estou desnortiado.
Segue o código do ActionPerformed do botão “Adicionar à Lista”:
try {
/*
* "listaProd" é a lista TOTAL com todos os objetos de produtos cadastrados
* "comboProd" é a combo que exibe os "nomes" de listaProd
* "campoQuant" é o JtextField onde será inserido a quantidade
* "quantidade" é o vetor que terá o mesmo índice do produto adicionado a lista
* "naLista" é o vetor que guarda os produtos JÁ adicionados à lista
*/
//verifica se existe estoque do produto para ser adicionado...
if (listaProd[comboProd.getSelectedIndex()].getQunt() < Integer.parseInt(campoQuant.getText())) {
JOptionPane.showMessageDialog(null, "Não é possível adicionar o item: " + listaProd[comboProd.getSelectedIndex()].getNome() + " pois ele possui um estoque de: " + listaProd[comboProd.getSelectedIndex()].getQunt() + " que é inferior a quantidade querendo vender de: " + Integer.parseInt(campoQuant.getText()) + " itens.");
} else if (Integer.parseInt(campoQuant.getText()) <= 0) {
JOptionPane.showMessageDialog(null, "Valor inserido na Quantidade é inválido!");
} else {
//Adiciona o produto e a quantidade no vetor "naLista" e no vetor "quantidade"
quantidade[count] = Integer.parseInt(campoQuant.getText());
naLista[count] = listaProd[comboProd.getSelectedIndex()];
//Preenche a jtable...
preencher_jtable();
//Diminui do estoque e fazer outras operações internas...
naLista[count].dimEstoque(quantidade[count]);
naLista[count].setQuantidadeVendida(quantidade[count]);
naLista[count].setPrecoVendido(naLista[count].getPreco() * quantidade[count]);
count++;
}
} catch (IndexOutOfBoundsException e) {
JOptionPane.showMessageDialog(null, "Não existe nenhum produto cadastrado");
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, "Digite um número na 'Quantidade'");
}
A seguir gostaria de disponibilizar o código do método “preencher_jtable()”:
[code]
public void preencher_jtable() {
jTable1.getColumnModel().getColumn(0).setPreferredWidth(150);
jTable1.getColumnModel().getColumn(1).setPreferredWidth(20);
DefaultTableModel modelo = (DefaultTableModel) jTable1.getModel();
modelo.setNumRows(0);
int i;
for (i = 0; naLista[i] != null; i++) {
modelo.addRow(new Object[]{naLista[i].getNome(), quantidade[i]});
}
}[/code]
É isso aí, não estou pedindo pela resposta, mas quem puder por favor me dár uma luz, agradeço!
Também gostaria que alguem olhasse a aplicação e me desse dicas, sugestões, críticas, qual quer coisa que possa melhorar a interface gráfica da aplicação, ou até mesmo sua funcionalidade… Vou anexar o .jar da aplicação aqui, e agradeço desde já as futuras respostas! (espero eu… hehe)
http://dl.dropbox.com/u/15625458/BarGatao.jar
OBS: Não é programa para trabalho escolar nem nada… Estou fazendo para aprender mesmo!
Abraços,
Noronha