UUUFFFFFAAAA.... depois de 3 dias quebrando a cabeça consegui fazer do jeito que estou querendo.....
Muito obrigado ViniGodoy pela atenção.
Vou postar as classes aqui pra que se outra pessoa precisar não ficar tanto tempo pra resolver o problema.... porque hoje em dia tempo é dinheiro.
Segue a classe JTableRenderer (imagem)
import javax.swing.*;
import javax.swing.table.DefaultTableCellRenderer;
/**
* @author Alex Passos
*/
public class JTableRenderer extends DefaultTableCellRenderer {
protected void setValue(Object value){
if (value instanceof ImageIcon){
if (value != null){
ImageIcon d = (ImageIcon) value;
setIcon(d);
} else{
setText("");
setIcon(null);
}
} else {
super.setValue(value);
}
}// fim da função
}
Classe colCidades
import javax.swing.Icon;
/**
* @author Alex Passos
*/
public class colCidades {
private String vId;
private String vDescricao;
private Icon vEditar;
private Icon vExcluir;
public String getID(){
return vId;
}
public void setID(String id){
vId = id;
}
public String getDescricao(){
return vDescricao;
}
public void setDescricao(String descricao){
vDescricao = descricao;
}
public Icon getEditar(){
return vEditar;
}
public void setEditar(Icon editar){
vEditar = editar;
}
public Icon getExcluir(){
return vExcluir;
}
public void setExcluir(Icon excluir){
vExcluir = excluir;
}
}
Classe cidadeTableModel
import java.awt.*;
import java.util.ArrayList;
import java.util.List;
import javax.swing.*;
import javax.swing.table.*;
/**
* @author Alex Passos
*/
public class cidadeTableModel extends AbstractTableModel{
private List<colCidades> linhas;
private String[] cColunas = new String[]{"ID", "Descrição", "Editar", "Excluir"};
public cidadeTableModel(){
linhas = new ArrayList<colCidades>();
}
public cidadeTableModel(List<colCidades> listaCidades){
linhas = new ArrayList<colCidades>(listaCidades);
}
@Override
public int getColumnCount(){
return cColunas.length;
}
@Override
public int getRowCount(){
return linhas.size();
}
@Override
public String getColumnName(int columnIndex){
return cColunas[columnIndex];
}
@Override
public Class<?> getColumnClass(int columnIndex){
switch (columnIndex){
case 0:
return String.class;
case 1:
return String.class;
case 2:
return Image.class;
case 3:
return Image.class;
default:
throw new IndexOutOfBoundsException("ColumnIndex out of bounds");
}
}
@Override
public Object getValueAt(int rowIndex, int columnIndex){
colCidades cCidades = linhas.get(rowIndex);
switch (columnIndex){
case 0:
return cCidades.getID();
case 1:
return cCidades.getDescricao();
case 2:
return cCidades.getEditar();
case 3:
return cCidades.getExcluir();
default:
throw new IndexOutOfBoundsException("Column out of bounds");
}
}
public void setValutAt(Object aValue, int rowIndex, int columnIndex){};
@Override
public boolean isCellEditable(int rowIndex, int columnIndex){
return false;
}
public colCidades getCidades(int indiceLinha){
return linhas.get(indiceLinha);
}
public void addCidades (colCidades cidades){
linhas.add(cidades);
int ultimoIndice = getRowCount() - 1;
fireTableRowsInserted(ultimoIndice, ultimoIndice);
}
public void removeCidade(int indiceLinha){
linhas.remove(indiceLinha);
fireTableRowsDeleted(indiceLinha, indiceLinha);
}
public void addListaCidades(List<colCidades> cidades){
int tamanhoAntigo = getRowCount();
linhas.addAll(cidades);
fireTableRowsInserted(tamanhoAntigo, getRowCount() -1);
}
public void limpar(){
linhas.clear();
fireTableDataChanged();
}
public boolean isEmpty(){
return linhas.isEmpty();
}
}
Classe de utilização JFrame ( frmCidades )
import conexao.conexao;
import java.net.URL;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
/**
* @author Alex Passos
*/
public class frmCidades extends javax.swing.JFrame {
public static Connection con = conexao.conexao;
private Statement stm;
private ResultSet rs;
private cidadeTableModel modelCidade;
public frmCidades() throws SQLException {
initComponents();
jTab.setModel(new cidadeTableModel());
jTab.setAutoCreateRowSorter(true);
jTab.setRowHeight(30);
TableColumnModel ColumnModel = jTab.getColumnModel();
JTableRenderer renderer = new JTableRenderer();
ColumnModel.getColumn(2).setCellRenderer(renderer);
ColumnModel.getColumn(3).setCellRenderer(renderer);
jTab.getColumnModel().getColumn(0).setPreferredWidth(10);
jTab.getColumnModel().getColumn(1).setPreferredWidth(250);
jTab.getColumnModel().getColumn(2).setPreferredWidth(20);
jTab.getColumnModel().getColumn(3).setPreferredWidth(20);
try {
Icon editar = new ImageIcon("D:/Imagens/Ícones/table_edit24.png");
Icon excluir = new ImageIcon("D:/Imagens/Ícones/table_delete24.png");
getModel().limpar();
stm = con.createStatement();
rs = stm.executeQuery("select * from cidades");
while (rs.next()) {
addCidade(rs.getString("id"), rs.getString("descricao"), editar, excluir);
}
} catch (SQLException erro) {
}
}
private cidadeTableModel getModel() {
if (modelCidade == null) {
modelCidade = (cidadeTableModel) jTab.getModel();
}
return modelCidade;
}
private colCidades getCidade(String id, String descricao, Icon editar, Icon excluir) {
colCidades cCidades = new colCidades();
cCidades.setID(id);
cCidades.setDescricao(descricao);
cCidades.setEditar(editar);
cCidades.setExcluir(excluir);
return cCidades;
}
private void addCidade(String id, String descricao, Icon editar, Icon excluir) {
getModel().addCidades(getCidade(id, descricao, editar, excluir));
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
jTab = new javax.swing.JTable();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Cidade");
getContentPane().setLayout(new java.awt.FlowLayout());
jTab.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
jScrollPane1.setViewportView(jTab);
getContentPane().add(jScrollPane1);
pack();
}// </editor-fold>
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
new frmCidades().setVisible(true);
} catch (SQLException ex) {
Logger.getLogger(frmCidades.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
}
// Variables declaration - do not modify
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable jTab;
// End of variables declaration
}
Até mais... que Deus abençoe