Olá amigos.
Estou precisando de uma força aqui com minha JTable.
Seguindo o conselho de vários amigos aqui no fórum como o ViniGodoy e outros, não ultilizo o DefaultTableModel como modelo e implementei os meus métodos o que realmente é uma mão na roda.
Só que ainda sou iniciante no AbstractTableModel e estou precisando de uma força pessoal.
É o seguinte.
Tenho um JTable onde o cara, em tempo de execução, vai adicionando linhas de acordo com o formulário preenchido, quando ele clica em incluir o sistema pega os valores e coloca em uma nova linha no JTable, tá tudo funcionando legal(trata-se de várias linhas porque é um controle de saída de produtos de estoque).
Então, até ae tudo bem, só que agora eu preciso pegar todos os dados da JTable, para poder jogar tudo no banco depois.
É o seguinte esquema, um array de itens retirados, pessoa que retirou(vem de um textField),data que retirou.
Preciso pegar todas as linahs e todas as colunas e colocar em um List mas ele só joga para Object e não estou sabendo como manipular, não estou conseguindo pensar como, estive olhando várias coisas aqui no fórum mas gostaria de algo mas específico para o meu caso.
meu model:
package Util;
import Model.SaidaPatrimonio;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.AbstractTableModel;
/**
*
* @author Andre
*/
public class MyTable extends AbstractTableModel {
private List<SaidaPatrimonio> linhas;
private String[] colunas = {"Código Patrimônio","Descrição","Quantidade","Setor"};
public MyTable(){
linhas = new ArrayList<SaidaPatrimonio>();
}
@Override
public int getRowCount() {
return linhas.size();
}
@Override
public int getColumnCount() {
return colunas.length;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
SaidaPatrimonio s = linhas.get(rowIndex);
// Retorna o campo referente a coluna especificada.
// Aqui é feito um switch para verificar qual é a coluna
// e retornar o campo adequado. As colunas sãoas mesmas
// que foram especificadas no array "colunas".
switch (columnIndex) {
// Seguindo o exemplo: "código","Descrição", "Quantidade", "setor"};
case 0:
return s.getIdPatrimonio();
case 1:
return s.getDescricaoPatrimonio();
case 2:
return s.getQuantidadeRetirada();
case 3:
return s.getSetor();
default:
// Isto não deveria acontecer...
throw new IndexOutOfBoundsException("columnIndex out of bounds");
}
}
@Override
public String getColumnName(int columnIndex) {
// Retorna o conteúdo do Array que possui o nome das colunas
return colunas[columnIndex];
}
public SaidaPatrimonio getSaidaPatrimonio(int indiceLinha) {
return linhas.get(indiceLinha);
}
/* Adiciona um registro. */
public void addSaida(SaidaPatrimonio s) {
// Adiciona o registro.
linhas.add(s);
//JOptionPane.showMessageDialog(null,linhas.get(0).getDescricaoPatrimonio());
int ultimoIndice = getRowCount()-1;
fireTableRowsInserted(ultimoIndice, ultimoIndice);
}
/* Remove a linha especificada. */
public void removeCliente(int indiceLinha) {
linhas.remove(indiceLinha);
fireTableRowsDeleted(indiceLinha, indiceLinha);
}
/* Remove todos os registros. */
public void limpar() {
linhas.clear();
fireTableDataChanged();
}
/* Verifica se este table model esta vazio. */
public boolean isEmpty() {
return linhas.isEmpty();
}
/* Adiciona uma lista de Cliente ao final dos registros. */
public void addListaDeSaidas(List<SaidaPatrimonio> s) {
// Pega o tamanho antigo da tabela.
int tamanhoAntigo = getRowCount();
// Adiciona os registros.
linhas.addAll(s);
fireTableRowsInserted(tamanhoAntigo, getRowCount() - 1);
}
}
Por favor amigos me ajudem.
Qualquer informação que precisarem é só falar.