Hello everyone,
three days I'm crazy to make a JTable editable cells can change ... but I do not understand why the program uses my InteractiveTableModelListener but use another that I do not know what ... then you edit the table cell but I can not check the entered data to save so everything is temporary.HELP ME
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);//here it must print anything but don't work
jTable1.getModel().setValueAt(3, row, column);
}
}
}
this is my Table model
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];
}
[/COLOR="blue"]
public boolean isCellEditable(int row,int col){
return true;
}
[COLOR]
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;
}
}
thanks