Galera..
to com OS SEGUINTES PROBLEMAS:
1º Eu tenho uma JTable com um modelo implementado por mim (segue abaixo).. e é o seguinte:
tem um campo OBS nele é pode ser alterado, ai até ai funciona.. só que vamo supor que eu tenho 5 registros na minha JTable..
eu altero os 5 campos de OBS.. ao terminar de alterar o ultimo eu clico em "SALVAR".. ele salva apenas das 4 primeiras, a ultima não, pois é como se o foco estivesse nela ainda para alteração e nao tivesse "salvo" na minha lista a alteração do ultimo registro! Eu precisava fazer algo do tipo a cada "caracter" inserido.. ele ja salvasse no meu List (eu acho que essa seria a solução - nao sei se me expressei bem.. qualquer coisa falem ai que eu tento explica melhor)
public class SessaoPresencaTableModel extends AbstractTableModel {
private static final int COL_IRMCODIGO = 0;
private static final int COL_IRMNOME = 1;
private static final int COL_PRESENCA = 2;
private static final int COL_OBS = 3;
private List<SessaoPresencaIrmaosJTable> lista;
public SessaoPresencaTableModel(List<SessaoPresencaIrmaosJTable> lista) {
this.lista = lista;
}
public int getRowCount() {
return lista.size();
}
public int getColumnCount() {
return 4;
}
@Override
public String getColumnName(int column) {
if (column == COL_IRMCODIGO) {
return "ID";
} else if (column == COL_IRMNOME) {
return "Nome";
} else if (column == COL_PRESENCA) {
return "Presença";
} else if (column == COL_OBS) {
return "Observação";
} else {
return "";
}
}
@Override
public Class<?> getColumnClass(int columnIndex) {
if (columnIndex == COL_IRMCODIGO) {
return Integer.class;
} else if (columnIndex == COL_IRMNOME) {
return String.class;
} else if (columnIndex == COL_PRESENCA) {
return Boolean.class;
} else if (columnIndex == COL_OBS) {
return String.class;
} else {
return String.class;
}
}
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
SessaoPresencaIrmaosJTable value = (SessaoPresencaIrmaosJTable) lista.get(rowIndex);
if (columnIndex == COL_PRESENCA) {
value.setPresenca((Boolean) aValue);
} else if (columnIndex == COL_OBS) {
value.setObs((String) aValue);
}
fireTableDataChanged();
}
public Object getValueAt(int rowIndex, int columnIndex) {
SessaoPresencaIrmaosJTable sessao = (SessaoPresencaIrmaosJTable) lista.get(rowIndex);
if (columnIndex == COL_IRMCODIGO) {
return sessao.getIrmCodigo();
} else if (columnIndex == COL_IRMNOME) {
return sessao.getIrmNome();
} else if (columnIndex == COL_PRESENCA) {
return sessao.isPresenca();
} else if (columnIndex == COL_OBS) {
return sessao.getObs();
} else {
return "";
}
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
if (columnIndex == COL_PRESENCA || columnIndex == COL_OBS) {
return true;
} else {
return false;
}
}
public SessaoPresencaIrmaosJTable get(int row) {
return (SessaoPresencaIrmaosJTable) lista.get(row);
}
@Override
public int findColumn(String columnName) {
if (columnName.equals("ID")) {
return 0;
} else if (columnName.equals("Nome")) {
return 1;
} else if (columnName.equals("Presença")) {
return 2;
} else {
return -1;
}
}
}
2º Como deixar apenas o CABEÇALHO ID centralizado?
Ex:
| ID | NOME .................... | OBS ................... | (coloquei os "." pq nao aceita espaços)
só quero o Header (cabeçalho) da coluna ID centralizado..
a coluna em si eu ja consegui com os conteudos.. mais o cabeçalho ou ele aplica em todos.. ou ele peder a formatação natural da JTable..
queria sugestões!
3º Com inserir linha e remover linha do meu modelo?! eu crio um método add.. e dentro dele eu do um lista.add(new SessaoPresencaIrmaosJTable(parametros)); ? e boa?
e pra remoder crio um método del com a linha por parametro e removo na lista aquela determinada linha?!
4º eu ficaria MTO feliz, se alguem podesse da um exemplo como o Vinni deu sobre o
AbstractTableModel.. sobre outros métodos dessa classe.. como: fireTableCellUpdated, addTableModelListener, fireTableChanged, fireTableDataChanged, fireTableRowsDeleted, fireTableRowsInserted, fireTableRowsUpdated, fireTableStructureChanged, getListeners, getTableModelListeners, removeTableModelListener..
se possivel um tutorial.. de como inserir um ComboBox, Button e etc no lugar de um CheckBox
pq isso pode ajuda mta gente inciante em Java como eu..
alguem pode fala assim, nossa quanta dúvida, esse cara nao pesquisa nada.. mais só o fato de estar no forum lendo tópicos e tentando, quebrando a cabeça ja ajuda mtoo.. exemplos práticos de vida real ajudam a idealizar soluções mais concretas para os problemas de cada um!
demais é só..
valeu galera, aguardo retorno de vcs!