Salve ragazzi ho un problema.
Ho una JTable che viene inizializzata con un query ad un database.
La tabella contiene tante righe quanti sono i record del database e 2 colonne
nella colonna 0 ci sono gli elementi del database nella colonna 1 io posso inserire dei numeri.
Ora il mio obiettivo è l'utente deve inserire dei numeri fino la cui somma è 100, appena la somma è 100 può attraverso un pulante lanciare una query.
Ricapitolando.
All'avvio la jtable viene popolata ad esempio con 100 righe poichè 100 sono gli elementi del database e 2 colonne standard.
Io devo inserire dei numeri nella colonna 1. La somma di questi numeri deve essere 100, appena arrivata a 100 devo abilitare un botton che mi consente di generare la query.
Il mio problema è che non riesco a perfezionare l'algoritmo che mi consente di controllare che il la somma non superi il 100.
Detto ciò, io devo con il pulsante salva lanciare tante query quante sono le righe in cui ho inserito un numero.
Ad esmepio ho le 100 righe io inserisco alla riga 10 colonna 1 il numero 90
alla riga 50 colonna 1 il numero 10
la somma è 100 a sto punto devo lanciare una query prendendo i dati dalla riga dove sta il 90 e la riga dove sta il 10.
Posto un po di codice della mia tabella
spero mi possiate aiutare graziecodice:class TableExample extends JTable { double somma=0; private class MyMouseAdapter extends MouseAdapter { public void mouseClicked(MouseEvent me) { TableExample t = (TableExample)me.getSource(); int row = t.rowAtPoint(me.getPoint()); int column = t.columnAtPoint(me.getPoint()); System.out.println("La colonna selezionata è la " + column); System.out.println("La riga selezionata è la " + row); } } public boolean isCellEditable(int row, int column) { return true; } public Class getColumnClass(Float columnIndex) { return Float.class; // Le due colonne sono numeri interi } public TableExample(Vector v, Vector n) { super(v, n); this.addMouseListener(new MyMouseAdapter()); } public void selectCell(int row,int col) { if(row!=-1 && col !=-1) { table.setRowSelectionInterval(row,row); table.setColumnSelectionInterval(col,col); } } public void setValueAt(Object aValue, int rowIndex, int columnIndex) { super.setValueAt(aValue, rowIndex, columnIndex); if (columnIndex == 1) { String elemento = this.getValueAt(rowIndex,1).toString(); System.out.println("L'elemento che mi hai scritto vale " + elemento); double element = Double.parseDouble(elemento); somma +=element; if(somma>100) { JOptionPane.showMessageDialog(getRootPane(), "Attenzione la somma degli zuccheri non può superare 100","Eccesso",JOptionPane.WARNING_MESSAGE); somma -= element; buttons.setEnabled(false); super.setValueAt("",rowIndex,1); } else{ if(somma ==100) { buttons.setEnabled(true); } } } }//fine metodo setValueAt } }



Rispondi quotando