Si esatto...l'errore sta proprio nel costruttore. Infatti instanzi una nuova JTable che ha visibilità solo nel costruttore e non fa rifermento alla table della classe. Pertanto quest'ultima rimane null.
Si esatto...l'errore sta proprio nel costruttore. Infatti instanzi una nuova JTable che ha visibilità solo nel costruttore e non fa rifermento alla table della classe. Pertanto quest'ultima rimane null.
Al mio segnale... scatenate l'inferno!
Ok...però ora c'è il problema dei totali!
Il compilatore mi dà errore in queste parti di codice in rosso:
GRAZIE MILLE!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; this.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); valore = valore!=null && !valore.equals("") ? valore.toString().repleaceAll(",","\\.") : "0"; somma = somma + Float.parseFloat(valore.toString()); } table.setValueAt(somma, table.getModel().getRowCount()-1, indiceColonna); } } table.addPropertyChangeListener(new java.beans.PropertyChangeListener() { public void propertyChange(java.beans.PropertyChangeEvent evt) { tablePropertyChange(evt); } }); }
![]()
che errori da?
Al mio segnale... scatenate l'inferno!
Mi sono sbagliata...la parte che dà errori è solo questa:
ERRORI:codice:table.addPropertyChangeListener(new java.beans.PropertyChangeListener() { public void propertyChange(java.beans.PropertyChangeEvent evt) { tablePropertyChange(evt); } });
GRAZIE ANCORA!codice:<identifier> expected illegal start of type illegal start of expression class, interface, or enum expected class, interface, or enum expected
Mi sa che è un errore di bilanciamento di parentesi graffe... prova a ricontrollare per bene in tutta la classe
Al mio segnale... scatenate l'inferno!
Scusa... ora ho visto meglio... quella parte di codice va messa all'interno di un metodo magari come ultima istruzione del costruttore
![]()
Al mio segnale... scatenate l'inferno!
Già...che sbadata!!
GRAZIE MILLE!
![]()
Ho spostato il pezzo di codice qui:
Ora mi dice "cannot find symbol" nella riga in rosso!codice:import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; public class PannelloTabella extends JPanel { private ListNode CLIENTI, PRODOTTI; private JTable table; private JScrollPane scrollPane; private JButton b; private JLabel jl; private JTextField txt; public PannelloTabella(ListNode CLIENTI, ListNode PRODOTTI) { this.CLIENTI = CLIENTI; this.PRODOTTI = PRODOTTI; setBackground(new Color(41,148,255)); jl = new JLabel("Data:"); txt = new JTextField(8); txt.setEditable(true); GestioneTabellaOrdini gt = new GestioneTabellaOrdini(CLIENTI, PRODOTTI); table = gt.creaTabellaOrdini(); scrollPane = new JScrollPane(table); b = new JButton("STAMPA"); add(jl); add(txt); add(scrollPane); add(b); table.addPropertyChangeListener(new java.beans.PropertyChangeListener() { public void propertyChange(java.beans.PropertyChangeEvent evt) { tablePropertyChange(evt); } }); } }
GRAZIE PER LA TUA PAZIENZA!
devi spostare anche il metodo tablePropertyChange![]()
Al mio segnale... scatenate l'inferno!
GRAZIE MILLE!
Ora io dovrei stampare e salvare la finestra con la tabella!!!
E' un casino???
Il nostro professore non ci ha neanche accennato come si esegue una stampa, e nemmeno ne parla il libro che ci ha dato!
GRAZIE ANCORA!
![]()