Sono ore che sto impazzendo a cercare di capire cosa non va in questo metodo, ma non ci riesco. Praticamente invece di eliminarmi il prodotto selezionato mi elimina sempre l'ultimo che vedo nella lista. Ho usato una logica simile per l'eliminazione dei menu e funziona bene. Non riesco proprio a capire anche perché mi sembra che ieri funzionava... o forse non ho controllato tutti i possibili scenari boh... in effetti ho modificato qualcosa per risolvere un piccolo problema, ma non mi pare sia qualcosa che potesse influenzare questa parte. La differenza fra la lista dei prodotti e quella dei menu è che quella dei prodotti viene caricata solo quando si seleziona un menu mentre quella dei menu viene inizializzata all'apertura della maschera. L'eliminazione del prodotto avviene tramite l'id del prodotto che viene estratto dalla lista di oggetti prodotto.
Confido in un vostro occhio più arguto...Grazie!
codice:
private void bDeleteProdActionPerformed(java.awt.event.ActionEvent evt) {
Product selectedProduct = (Product) productList.getSelectedValue();
selectedProduct.getProductId();
int index = productList.getSelectedIndex();
int result = DBConnection.deleteProduct(selectedProduct);
int size = modelProductList.getSize();
if (size == 0) { //Non sono rimasti prodotti nella lista, disabilito Elimina Prodotti
bDeleteProd.setEnabled(false);
} else {
if (index == modelProductList.getSize()) {
index--;
}
productList.setSelectedIndex(index);
productList.ensureIndexIsVisible(index);
}
if (result == 1) {
//se la rimozione e' andata a buon fine ricarico la lista prodotti
reloadProductList();
productName.setText("");
productPrice.setText("");
bNewProduct.setEnabled(true);
}
}
Questo è il metodo che ascolta i cambiamenti di selezione sulla lista prodotti:
codice:
private void productListValueChanged(javax.swing.event.ListSelectionEvent evt) {
int index = productList.getSelectedIndex();
if (index >= 0) {
Product selectedProduct = (Product) productList.getSelectedValue();
productName.setText(selectedProduct.getProductName());
selectedProduct = (Product) productList.getSelectedValue();
productPrice.setText("" + selectedProduct.getProductPrice());
bNewProduct.setEnabled(true);
} else {
bDeleteProd.setEnabled(false);
}
bDeleteProd.setEnabled(true);
}
EDIT: ho capito...non so come mai ma di solito nel momento in cui posto la richiesta qua dopo 5 minuti mi viene l'illuminazione
La cosa incredibile è che pochi giorni fa avevo fatto lo stesso identico errore e l'avevo pure risolto. Il problema stava nel fatto che productId era static :-| Eppure sono sicura che ieri funzionava...tuttavia ho fa tto dei passaggi di file fra un pc e l'altro e potrebbe darsi che mi sono trascita dietro una classe non aggiornata