Problema ao incluir botão na JTable

Ae Galera, estou com problema em incluir um botão na minha Table, consigo colocar o botão na ultima coluna e pra cada linha tudo blz, mas parece que ele esta bloqueado ao clicar nele a coluna esta inativa, somente as que contem dados consigo “selecionar”. Esta minha Table é implementada desde o modelo até sua criação. Para incluir esse botão na coluna utilizo a implementação de: TableCellRenderer e TableCellEditor. Abaixo todas as classes da minha Table:

Essa classe é responsável por implementar o botão em uma coluna na Table:
JTableButtonColumn.java

public class JTableButtonColumn extends AbstractCellEditor 
	implements TableCellRenderer,TableCellEditor,MouseListener{
	
	private JTable jTable = null;
	private TableColumnModel columnModel = null;
	private int column;
	private String text = "ABC";
	private ImageIcon image = null;
	private JButton deleteButton = null;
	
	public JTableButtonColumn(JTable jTable,int column) {
		super();
		this.jTable = jTable;
		this.column = column;
		this.initialize();
	}
	
	public void initialize(){
		
		deleteButton = new JButton();
		deleteButton.setFocusPainted( false );
		
		this.columnModel = this.jTable.getColumnModel();
		this.columnModel.getColumn(column).setCellRenderer( this );
		this.columnModel.getColumn(column).setCellEditor( this );
		
	}
	
	@Override
	public void mouseClicked(MouseEvent e) {
		JOptionPane.showMessageDialog(null, "FUI CLICADO");
		
	}
	
	@Override
	public Component getTableCellRendererComponent(JTable table, Object value,
			boolean isSelected, boolean hasFocus, int row, int column) {
		
		if (hasFocus)       
        {       
            deleteButton.setForeground(table.getForeground());       
            deleteButton.setBackground(UIManager.getColor("Button.background"));       
        }       
        else if (isSelected)       
        {       
            deleteButton.setForeground(table.getSelectionForeground());       
             deleteButton.setBackground(table.getSelectionBackground());       
        }       
        else       
        {       
            deleteButton.setForeground(table.getForeground());       
            deleteButton.setBackground(UIManager.getColor("Button.background"));       
        }
		deleteButton.setText("TESTE");
		return deleteButton;
	}
		
	@Override
	public Component getTableCellEditorComponent(JTable table, Object value,
			boolean isSelected, int row, int column) {
		this.text = (value == null) ? "" : value.toString();
		deleteButton.setText(this.text);
		return deleteButton;
	}
	
	@Override
	public Object getCellEditorValue() {
		return text;
	}
	
	@Override
	public CellEditorListener[] getCellEditorListeners() {
		// TODO Auto-generated method stub
		return super.getCellEditorListeners();
	}
			
	@Override
	public void addCellEditorListener(CellEditorListener arg0) {
		// TODO Auto-generated method stub
		super.addCellEditorListener(arg0);
	}
	//Methods not Utilized
	@Override
	public void mousePressed(MouseEvent e) {}
	@Override
	public void mouseEntered(MouseEvent e) {}
	@Override
	public void mouseExited(MouseEvent e) {}
	
	@Override
	public void mouseReleased(MouseEvent e) {}
	//End
}

Classe que implementa o modelo da Table:
JTableModel.java

package pckTeste.gui;

import javax.swing.table.AbstractTableModel;

public class JTableModel extends AbstractTableModel {
	
    private String[] colunas;
	private Object[][] linhas;
	
	public JTableModel(Object[][] linhas,String[] colunas){
		
		setLinhas(linhas);
		setColunas(colunas);
	}
		
	//Obtem o valor da linhas e coluna
	public Object getValueAt(int rowIndex, int columnIndex){
		//Retorna linha
		return linhas[rowIndex][columnIndex];
		
		
	}
	
	//Seta valor da linha e coluna
	public void setValueAt(Object value,int rowIndex, int columnIndex){
		
		linhas[rowIndex][columnIndex] = value;
		fireTableCellUpdated(rowIndex, columnIndex);
	}
	
	
	
	//Adiciona nova linha
	public void addRow(Object[][] dadosLinha){
			
		setLinhas(dadosLinha);
		int linha = getLinhas().length -1;
		fireTableRowsInserted(linha,linha);
		
	}
	
	public String getColumnName(int col){
		return getColunas()[col];
	}
	//Retorna o numero de colunas
	public int getColumnCount(){
		return getColunas().length;
	}
	
	//Retorna o numero de linhas
	public int getRowCount(){
		
		return getLinhas().length;
	}
		
	public Object[][] getLinhas(){
		return linhas;
	}
	
	public String[] getColunas(){
		return colunas;
	}
	
	
	public void setLinhas(Object[][] dados){
		linhas = dados;
	}
	
	public void setColunas(String[] dados){
		colunas = dados;
	}
}

Classe que implementa a criação da Table e insere os dados
JTableGeneric.java

public class JTableGeneric extends JTable{
	
	private JTableModel model = null;
	private Object[][] linhas = null;
	private String[] colunas = null;
		
	public JTableGeneric(String[] colunas){
		this.colunas = colunas;
		this.linhas = new Object[1][colunas.length];
		model = new JTableModel(this.linhas,this.colunas);
	}
		
	public void popularJTable(ResultSet rs,int opcaoTemp)throws SQLException{
						
		ResultSetMetaData rsmd = rs.getMetaData();
		
		int r = 0;
		rs.last();
		r = rs.getRow(); 
		rs.beforeFirst();
		
		Object[][] linhaNova = new Object[r][model.getColumnCount()];

		r = 0;
	
		while(rs.next()){
		   if(opcaoTemp == 0){	
			for(int i=0; i < rsmd.getColumnCount(); i++){
				
				switch (rsmd.getColumnType(i + 1)) {
					case Types.INTEGER: 
							linhaNova[r][i] = ""+rs.getInt(rsmd.getColumnName(i + 1));
							break;
					case Types.VARCHAR:
							linhaNova[r][i] = rs.getString(rsmd.getColumnName(i + 1));
							break;
				}
				
			}
			model.addRow(linhaNova);
			r++;
	     }else{ //Atualmente utilizando essa interação 
		       for(int i=0; i < rsmd.getColumnCount(); i++){
		    		   linhaNova[r][i] = rs.getString(rsmd.getColumnName(i + 1));
		       }
	    	model.addRow(linhaNova);
	    	r++;
	       }
		}	   
		this.setModel(model);
	}
	
}

Criação dos objetos:

..............
    cadastroDAO = new CadastroDAO();
    jTableCreate = new JTableGeneric(colunas);
    jTableCreate.popularJTable(cadastroDAO.getCadastro(), 1);
    JTableButtonColumn jTableButtonColumn = new JTableButtonColumn(jTableCreate,2);
.............

Fiz um teste utilizando o modelo Default da Table e funcionou, pode ser problema no meu modelo, mas não consegui achar o que seria. :shock:

HELP-ME :frowning:

pra facilitar:
ao copiar e colar se código aqui ficaram vários # no começo das linhas, eu tive q ir apagando uma a uma…
qnd postar, coloque o código pra download em algum site, como o www.4shared.com pra facilitar pra gente… :slight_smile:
Vou testar se código aqui pra ver o que ocorre… Se conseguir não esqueça de avisar aqui!

Outra coisa, poste o código com os “includes” tb… senão pra testar temos que ficar incluindo (ou pedindo pra ferramenta incluir) os imports das classes…

Faz upload do seu código e passa o link aqui que eu tento ajudar…

Abraço!