Agora tenho uma Classe Abstract table model
public class SubstanciaTableModel extends AbstractTableModel {
private static final long serialVersionUID = 1L;
/* Lista de Cliente que representam as linhas. */
private List<Substancia> linhas;
/* Array de Strings com o nome das colunas. */
private String[] colunas = new String[]{
"Substancia"};
/* Cria um ClienteTableModel vazio. */
public SubstanciaTableModel() {
linhas = new ArrayList<Substancia>();
}
/* Cria um ClienteTableModel carregado com
* a lista de Cliente especificada. */
public SubstanciaTableModel(List<Substancia> listaDeSubstancia) {
linhas = new ArrayList<Substancia>(listaDeSubstancia);
}
/* Retorna a quantidade de colunas. */
@Override
public int getColumnCount() {
// Está retornando o tamanho do array "colunas".
return colunas.length;
}
/* Retorna a quantidade de linhas. */
@Override
public int getRowCount() {
// Retorna o tamanho da lista de Cliente.
return linhas.size();
}
@Override
public String getColumnName(int columnIndex) {
// Retorna o conteúdo do Array que possui o nome das colunas
return colunas[columnIndex];
}
;
@Override
public Class<?> getColumnClass(int columnIndex) {
return String.class;
}
;
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
Substancia substancia = 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: "Tipo","Data de Cadastro", "Nome", "Idade"};
case 0:
return substancia.getFi_id();
default:
// Isto não deveria acontecer...
throw new IndexOutOfBoundsException("columnIndex out of bounds");
}
}
@Override
//modifica na linha e coluna especificada
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
Substancia substancia = linhas.get(rowIndex); // Carrega o item da linha que deve ser modificado
switch (columnIndex) { // Seta o valor do campo respectivo
case 0:
substancia.setSubstancia(aValue.toString());
default:
// Isto não deveria acontecer...
}
fireTableCellUpdated(rowIndex, columnIndex);
}
//modifica na linha especificada
public void setValueAt(Substancia aValue, int rowIndex) {
Substancia substancia = linhas.get(rowIndex); // Carrega o item da linha que deve ser modificado
substancia.setSubstancia(aValue.getSubstancia());
fireTableCellUpdated(rowIndex, 0);
}
;
;
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return false;
}
public Substancia getSubstancia(int indiceLinha) {
return linhas.get(indiceLinha);
}
/* Adiciona um registro. */
public void addCliente(Substancia m) {
// Adiciona o registro.
linhas.add(m);
int ultimoIndice = getRowCount() - 1;
fireTableRowsInserted(ultimoIndice, ultimoIndice);
}
/* Remove a linha especificada. */
public void removeCliente(int indiceLinha) {
linhas.remove(indiceLinha);
fireTableRowsDeleted(indiceLinha, indiceLinha);
}
/* Adiciona uma lista de Cliente ao final dos registros. */
public void addListaDeSubstancia(List<Substancia> substancia) {
// Pega o tamanho antigo da tabela.
int tamanhoAntigo = getRowCount();
// Adiciona os registros.
linhas.addAll(substancia);
fireTableRowsInserted(tamanhoAntigo, getRowCount() - 1);
}
/* Remove todos os registros. */
public void limpar() {
linhas.clear();
fireTableDataChanged();
}
/* Verifica se este table model esta vazio. */
public boolean isEmpty() {
return linhas.isEmpty();
}
}
Minha Classe entidade
public class Substancia {
private int fi_id;
private String substancia;
public int getFi_id() {
return fi_id;
}
public void setFi_id(int fi_id) {
this.fi_id = fi_id;
}
public String getSubstancia() {
return substancia;
}
public void setSubstancia(String substancia) {
this.substancia = substancia;
}
}
public class SubstanciaDao {
List<Substancia>substancia ;
private Connection conexao;
public SubstanciaDao() throws SQLException {
this.conexao = CriaConexao.getConexao();
}
public List<Substancia> getLista(String nome) throws SQLException{
String sql = "select * from tb_substancias WHERE fi_substancia like ? ORDER BY fi_substancia ASC";
PreparedStatement stmt = this.conexao.prepareStatement(sql);
stmt.setString(1, nome);
ResultSet rs = stmt.executeQuery();
List <Substancia> listaClientes = new ArrayList<Substancia>();
while (rs.next()){
Substancia c1 = new Substancia();
c1.setFi_id(Integer.valueOf(rs.getString("fi_pk_id")));
c1.setSubstancia(rs.getString("fi_substancia"));
listaClientes.add(c1);
}
rs.close();
stmt.close();
return listaClientes;
}
public ArrayList<Substancia> getLista() throws SQLException{
String sql = "select fi_substancia from tb_substancias";
PreparedStatement stmt = this.conexao.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
List<Substancia> minhalista = new ArrayList<Substancia>();
while (rs.next()){
Substancia cad = new Substancia();
cad.setSubstancia(rs.getString("fi_substancia"));//(rs.getString("nome"));
minhalista.add(cad);
}
rs.close();
stmt.close();
return (ArrayList<Substancia>) minhalista;
}
}
public class Teste1 extends JFrame {
private JPanel contentPane;
private JTable table;
private JButton btnPesquisar;
private JTextField tfPesquisar;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Teste frame = new Teste();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Teste1() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
JPanel panel = new JPanel();
contentPane.add(panel, BorderLayout.CENTER);
panel.setLayout(null);
table = new JTable(new SubstanciaTableModel());
table.setBounds(12, 118, 412, 134);
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
panel.add(table);
btnPesquisar = new JButton("Pesquisar");
btnPesquisar.setBounds(228, 58, 117, 24);
panel.add(btnPesquisar);
tfPesquisar = new JTextField();
tfPesquisar.setBounds(38, 61, 114, 18);
panel.add(tfPesquisar);
tfPesquisar.setColumns(10);
}
}