Ho fatto un po' di confusione!
TABELLA ORDINI
codice:
import javax.swing.table.DefaultTableModel;
public class TabellaOrdini extends DefaultTableModel {
private Object[][] data;
private String[] nomi;
private int ultimaRiga = 0;
/** Costruttore che inizializza la tabella passandole la matrice
* data e una stringa contenente i nomi delle colonne.
*/
public TabellaOrdini(Object[][] data, String[] nomi) {
super(data, nomi);
}
/** Costruttore che richiama il costruttore di default di
* DefaultTableModel (tabella con zero righe e zero colonne.
*/
public TabellaOrdini() {
super();
}
/** Specifica se le celle sono editabili. */
public boolean isCellEditable(int row, int col) {
if ((row < (ultimaRiga - 1)) && (col > 0)) return true;
else return false;
}
/** Restituisce il valore dell'ultima riga. */
public int getLastRow() {
return ultimaRiga;
}
/** Inizializza il valore dell'ultima riga. */
public void setLastRow(int lastRow) {
ultimaRiga = lastRow;
}
}
GESTIONE TABELLA ORDINI
codice:
import javax.swing.table.*;
import javax.swing.*;
public class GestioneTabellaOrdini {
private ListNode CLIENTI, PRODOTTI;
private JTable table;
public GestioneTabellaOrdini(ListNode CLIENTI, ListNode PRODOTTI) {
this.CLIENTI = CLIENTI;
this.PRODOTTI = PRODOTTI;
JTable table = new JTable();
}
public JTable creaTabellaOrdini() {
GestioneProdotti gp = new GestioneProdotti();
String[] nomiProdotti = gp.getNomiProdotti(PRODOTTI);
int lunghezza = nomiProdotti.length;
String[] Prodotti = new String[lunghezza + 1];
Prodotti[0] = "";
for (int i=1; i<=lunghezza; i++){
Prodotti[i] = nomiProdotti[i-1];
}
GestioneClienti gc = new GestioneClienti();
String[] nomiClienti = gc.getNomiClienti(CLIENTI);
int lung = nomiClienti.length;
String[] Clienti = new String[lung + 2];
for (int i=0; i<lung; i++) {
Clienti[i] = nomiClienti[i];
}
Clienti[lung] = "";
Clienti[lung + 1] = "TOTALI";
Object[][] datiCelle = new Object[Clienti.length][Prodotti.length];
/** Costruisco la griglia mettendo in prima colonna i clienti. */
for (int i=0; i<Clienti.length; i++) {
datiCelle[i][0] = Clienti[i];
for (int k=1; k<Prodotti.length; k++) {
datiCelle[i][k] = "";
}
}
TabellaOrdini myTable = new TabellaOrdini(datiCelle, Prodotti);
myTable.setLastRow(Clienti.length-1);
table.setModel(myTable);
return table;
}
public void tablePropertyChange(java.beans.PropertyChangeEvent evt) {
int indiceRiga = table.getSelectionModel().getAnchorSelectionIndex();
int indiceColonna = table.getColumnModel().getSelectionModel().getAnchorSelectionIndex();
int righe = table.getModel().getRowCount()-2;
float somma = 0;
if (indiceColonna != -1) {
for (int i=0; i<righe; i++) {
Object valore = table.getValueAt(i, indiceColonna);
somma = somma + Float.parseFloat(valore.toString());
}
table.setValueAt(somma, table.getModel().getRowCount()-1, indiceColonna);
}
}
}
PANNELLO TABELLA
codice:
public class PannelloTabella extends JPanel {
private ListNode CLIENTI, PRODOTTI;
private JTable t;
private JScrollPane scrollPane;
public PannelloTabella(ListNode CLIENTI, ListNode PRODOTTI) {
this.CLIENTI = CLIENTI;
this.PRODOTTI = PRODOTTI;
GestioneTabellaOrdini gt = new GestioneTabellaOrdini(CLIENTI, PRODOTTI);
t = gt.creaTabellaOrdini();
scrollPane = new JScrollPane(t);
add(scrollPane);
}
}
La tabella non viene visualizzata, in più il compilatore mi segnala questa eccezione:
codice:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at GestioneTabellaOrdini.creaTabellaOrdini(GestioneTabellaOrdini.java:56)
at PannelloTabella.<init>(PannelloTabella.java:24)
Le righe interessate dall'eccezione sono quelle in rosso!
Qualcuno può aiutarmi?
GRAZIE MILLE!