Ciao a tutti,
sono tre giorni che impazzisco per fare una jtable editabile...le celle riesco a modificarle ma non capisco il perchè il programma usa la mia InteractiveTableModelListener ma ne usa un altra che non so quale sia...quindi la cella della tabella si edita ma io non riesco a controllare il dato inserito per salvarlo quindi tutto rimane temporaneo. HELP ME
Questo è il modello che ho usato x editare la mia tabellacodice:import gestionesicurint.Mymodel.MyModelOperatori; import gestionesicurint.Operatori; import gestionesicurint.Server.Server; import gestionesicurint.Server.Server_OP; import gestionesicurint.Stampa; import java.util.Vector; import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelListener; import javax.swing.table.TableModel; public class TableOperatori extends javax.swing.JFrame { protected Server_OP server; protected Server [] x; protected MyModelOperatori dataModel; protected MyModelOperatori ciccio; protected Vector v; public TableOperatori(Server [] array) { server=(Server_OP)array[0]; x=array; initComponents(); } public void initComponent() { v= new Vector(server.GetArrayOp().length); for(int i=1;i<server.GetArrayOp().length;i++) { v.add(server.GetArrayOp()[i]); } dataModel = new MyModelOperatori(v); dataModel.addTableModelListener (new InteractiveTableModelListener()); setLocationRelativeTo(null); } public class InteractiveTableModelListener implements TableModelListener { public void tableChanged(TableModelEvent evt) { if (evt.getType() == TableModelEvent.UPDATE) { int column = evt.getColumn(); int row = evt.getFirstRow(); System.out.println("row: " + row + " column: " + column); //qui dovrebbe stamparmi il mio dato inserito jTable1.getModel().setValueAt(3, row, column); } } }
codice:package gestionesicurint.Mymodel; import gestionesicurint.GestioneOperatori; import java.util.Vector; import javax.swing.table.AbstractTableModel; import javax.swing.table.TableModel; public class MyModelOperatori extends AbstractTableModel { String[] ColName = {"Nome","Cognome","Codice Operatore","Data di Nascita","Costo Diurno","Costo Notturno","Costo Festivo"}; Vector v = null; protected TableModel model; public MyModelOperatori(Vector v) { this.v=v; } public int getColumnCount(){ return ColName.length; } public int getRowCount(){ return v.size(); } public Object getValueAt(int row,int col){ GestioneOperatori b = (GestioneOperatori)v.elementAt(row); String val = null; // la stringa corrispondente alla colonna switch (col){ case 0: val = b.GetArrayDati()[0]; break; case 1: val = b.GetArrayDati()[1]; break; case 2: val = b.GetArrayDati()[2]; break; case 3: val = b.GetArrayDati()[3]; break; case 4: val = ""+b.GetArrayCosti()[0]; break; case 5: val = ""+b.GetArrayCosti()[1]; break; case 6: val = ""+b.GetArrayCosti()[2]; break; default: val = ""; } return val; } public String getColumnName(int columnIndex) { return ColName[columnIndex]; } public boolean isCellEditable(int row,int col){ return true; } public void setValueAt(Object aValue, int aRow, int aColumn) { GestioneOperatori b = (GestioneOperatori)v.elementAt(aRow); String val = null; // la stringa corrispondente alla colonna switch (aColumn){ case 0: b.GetArrayDati()[0]=(String)aValue; break; case 1: b.GetArrayDati()[1]=(String)aValue; break; case 2: b.GetArrayDati()[2]=(String)aValue; break; case 3: b.GetArrayDati()[3]=(String)aValue; break; case 4: b.GetArrayCosti()[0]=Double.parseDouble((String)aValue); break; case 5: b.GetArrayCosti()[1]=Double.parseDouble((String)aValue); break; case 6: b.GetArrayCosti()[2]=Double.parseDouble((String)aValue); break; default: val = ""; } v.set(aRow,b); } public String[] getColumnameArray() { return ColName; } }
non so propio dove sbattere la testa non capisco xkè non entra nel mio metodo
graze

Rispondi quotando
