Olá.
Já fiz buscas no google mas não consegui encontrar nada para esclarecer essa minha duvida.
Implementei um AbstracTableModel. Tudo funciona corretamente. O problema está com a celula que estou digitando no momento em que mando persistir na base. Ela e salva como null.
Se eu clicar em outra célula antes antes de salvar ai o valor é salvo corretamente.
O Código do meu AbstractTableModel é o seguinte:
package br.com.claupers.model;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
public class FoneTableModel extends AbstractTableModel {
List<TbFone> lista;
public FoneTableModel(){
this.lista = new ArrayList<TbFone>();
}
public FoneTableModel(List<TbFone> c){
this();
lista.addAll(c);
}
public void addAll(List<TbFone> c){
lista.clear();
lista.addAll(c);
fireTableDataChanged();
}
public void add(TbFone e){
lista.add(e);
fireTableRowsInserted(lista.size(), lista.size());
}
@Override
public int getColumnCount() {
// TODO Auto-generated method stub
return 4;
}
@Override
public int getRowCount() {
// TODO Auto-generated method stub
return lista.size();
}
@Override
public Object getValueAt(int row, int col) {
TbFone f = lista.get(row);
if (col==0){
return f.getFoneCod();
}else if (col==1){
return f.getTbContato();
}else if (col==2){
return f.getFoneNumero();
}else if (col==3){
return f.getFoneTipo();
}
return "Vazio";
}
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
TbFone f = lista.get(rowIndex);
if (columnIndex==0){
f.setFoneCod(Integer.parseInt(aValue.toString()));
}else if (columnIndex==1){
f.setTbContato((TbContato)aValue);
}else if (columnIndex==2){
f.setFoneNumero(aValue.toString());
}else if (columnIndex==3){
f.setFoneTipo(aValue.toString());
}
fireTableCellUpdated(rowIndex, columnIndex);
}
@Override
public String getColumnName(int column) {
if (column==0){
return "ID";
}else if (column ==1){
return "ID Cont";
}else if(column==2) {
return "Numero";
}else if (column==3){
return "Tipo";
}
return super.getColumnName(column);
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
// TODO Auto-generated method stub
return true;
}
public void remove(int index){
lista.remove(index);
fireTableDataChanged();
}
public void remove(TbFone fone){
lista.remove(fone);
fireTableDataChanged();
}
@Override
public Class<?> getColumnClass(int columnIndex) {
// TODO Auto-generated method stub
return Object.class;
}
@Override
public void fireTableCellUpdated(int row, int column) {
// TODO Auto-generated method stub
super.fireTableCellUpdated(row, column);
}
}
Alguém sabe como resolver isso?