Um tópico que apresentava um problema parecido foi
ESTE , mas tentei adaptar todos os códigos que ele disponibilizou na solução e mesmo assim (não se se por "cabacice" minha ou se porque realmente algo está MUITO errado) não tive sucesso em nenhuma delas.
Como tem muita gente aqui no Forum que realmente manja da arte, vou postar o que tenho de código (mesmo errado) até agora:
ImageFormatter.java
package controle;
import com.towel.bean.Formatter;
import javax.swing.ImageIcon;
/**
* Esta classe é responsável pelas decodificações das imagens a serem manipuladas.
*
* @author Xuxão
* 11/02/2014
*/
public class ImageFormatter implements Formatter{
/**
* Converte o objeto passado como parâmetro em um vetor de bytes,
* transformando a sequência de bytes em um novo objeto ImageIcon
* @param o
* @return ImageIcon
*/
@Override
public ImageIcon format(Object o) {
byte[] imageInByte = (byte[])o;
return new ImageIcon(imageInByte);
}
/**
* Analisa o objeto passado como parâmetro e devolve um objeto ImageIcon
* @param o
* @return ImageIcon
*/
@Override
public ImageIcon parse(Object o) {
byte[] imageInByte = (byte[]) o;
return new ImageIcon(imageInByte);
}
@Override
public String getName() {
return "ImageFormatter";
}
}
ImageCellRendere.java
package modelo;
import javax.swing.ImageIcon;
import javax.swing.table.DefaultTableCellRenderer;
/**
*
* @author Xuxão
* 11/02/2014
*/
public class ImageCellRenderer extends DefaultTableCellRenderer{
@Override
protected void setValue(Object value){
ImageIcon icon = (ImageIcon) value;
setIcon(icon);
}
}
TelaTabela.java (JFrame)
package visao;
import controle.ConectaBD;
import java.sql.Blob;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import modelo.ModeloTabelas;
import modelo.ModeloTime;
/**
* Tela com a tabela oficial da Copa 2014.
* Traz as equipes separadas por grupos na primeira fase e, após
* a fase classificatória, preenche automaticamente cada fase, conforme
* os resultados dos jogos consequentes.
*
* @author Xuxão
* 05/02/2014
*/
public class TelaTabela extends javax.swing.JFrame {
// instancia-se um objeto ConectaBD para o preenchimento das tabelas
ConectaBD conectaTime = new ConectaBD();
// instancia-se um objeto ModeloTime:
ModeloTime time = new ModeloTime();
/**
* Creates new form TelaTabela
*/
public TelaTabela(){
initComponents();
preencherTabelaGrupos("SELECT * FROM time WHERE grupo = 'A' ORDER BY p DESC", tabelaTimesA1);
}
...
}// </editor-fold>
/**************** PREENCHIMENTO DAS TABELAS DE GRUPOS *********************/
// o método recebe um comando SQL e o nome de uma tabela como parâmetros:
public void preencherTabelaGrupos(String SQL, JTable tabela){
// instancia-se uma nova ArrayList
ArrayList dados = new ArrayList();
// instancia-se uma nova lista de colunas:
String[] Colunas = new String[]{"PAÍS","P","V","E","D","GP","GC","SG"};
try {// conecta o DB:
conectaTime.conectar();
// passa o comando SQL usado como parâmetro:
conectaTime.executarSQL(SQL);
// posiciona no primeiro registro:
conectaTime.mostraResultado.first();
do{// para cada registro encontrado:
// instancia-se um objeto Blob:
Blob imgBlob = conectaTime.mostraResultado.getBlob("bandeira");
// preenche as linhas com os dados:
dados.add(new Object[]{
// conectaTime.mostraResultado.getBlob("bandeira")+" "+
conectaTime.mostraResultado.getString("nomePais"),
conectaTime.mostraResultado.getInt("p"),
conectaTime.mostraResultado.getInt("v"),
conectaTime.mostraResultado.getInt("e"),
conectaTime.mostraResultado.getInt("d"),
conectaTime.mostraResultado.getInt("gP"),
conectaTime.mostraResultado.getInt("gC"),
conectaTime.mostraResultado.getInt("sG")});
}while(conectaTime.mostraResultado.next()); // enquanto existir registros
} catch (SQLException ex) {
JOptionPane.showMessageDialog(rootPane, "Falha ao carregar dados.\nErro: "+ex.getMessage());
}
// instancia-se um objeto ModeloTabelas...
ModeloTabelas modelo = new ModeloTabelas(dados, Colunas);
// e incorpora-se o modelo na tabela do formulário
tabela.setModel(modelo);
// determina-se o tamanho (em pixels) e o redimensionamento de cada uma das colunas:
// coluna do nome e da bandeira da seleção:
tabela.getColumnModel().getColumn(0).setPreferredWidth(230);
tabela.getColumnModel().getColumn(0).setResizable(false); // não se altera o tamanho
// coluna dos pontos:
tabela.getColumnModel().getColumn(1).setPreferredWidth(30);
tabela.getColumnModel().getColumn(1).setResizable(false); // não se altera o tamanho
// coluna das vitórias:
tabela.getColumnModel().getColumn(2).setPreferredWidth(30);
tabela.getColumnModel().getColumn(2).setResizable(false); // não se altera o tamanho
// coluna dos empates:
tabela.getColumnModel().getColumn(3).setPreferredWidth(30);
tabela.getColumnModel().getColumn(3).setResizable(false); // não se altera o tamanho
// coluna das derrotas:
tabela.getColumnModel().getColumn(4).setPreferredWidth(30);
tabela.getColumnModel().getColumn(4).setResizable(false); // não se altera o tamanho
// coluna dos gols Pró:
tabela.getColumnModel().getColumn(5).setPreferredWidth(30);
tabela.getColumnModel().getColumn(5).setResizable(false); // não se altera o tamanho
// coluna dos gols Contra:
tabela.getColumnModel().getColumn(6).setPreferredWidth(30);
tabela.getColumnModel().getColumn(6).setResizable(false); // não se altera o tamanho
// coluna do saldo de Gols:
tabela.getColumnModel().getColumn(7).setPreferredWidth(30);
tabela.getColumnModel().getColumn(7).setResizable(false); // não se altera o tamanho
// determina a localização da tabela no formulário:
tabela.getTableHeader().setReorderingAllowed(false); // não pode mudar de lugar
// determina o redimensionamento da tabela como um todo
tabela.setAutoResizeMode(tabela.AUTO_RESIZE_OFF); // não pode redimensionar a tabela
// permite a seleção de um único elemento da tabela
tabela.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
conectaTime.desconectar();
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
...
}
});
}
...
// End of variables declaration
}
Não sei se fui claro, mas espero que alguém consiga entender e me ajudar.
Abraços.