Oi pessoas…
Tenho um applet e apartir deste applet ou abro uma JDiolog onde existem dois painéis. Em um desses painéis são exibidas miniaturas de uma imagem e no outro são exibidas as imagens ampliadas.
O funcionamento é assim: quando eu clico em uma imagem no painel de miniaturas ela é ampliada e exibida no painel de imagens ampliadas, até ai tudo bem, mas quando eu clico no botão carregar, é exbido um JFileChooser, através do qual eu escolho a imagem que eu preciso, ao clicar em ok essa imagem é gravada no banco, isso também funciona, só que, após a imagem ser gravada no banco ela já deveria ser exibida no painel de miniaturas, só que isso só ocorre se eu fechar e abrir de novo o JDialog. Uma situação parecida ocorre quando eu vou excluir a imagem, o painel de imagens ampliadas é limpo, a imagem é excluida do banco, mas continua aparecendo no painel de miniaturas.
Quando eu tiro as imagens do banco, instancio JButtons dentro dos painéis para exibir as imagens. Assim quando clico nas imagens, são disparadas as ações que eu preciso.
Será que alguém tem alguma idéia do que está acontecendo? Tudo indica que o problema é a atualização da tela. afinal de contas se eu fecho e abro o JDialog, tudo aparece como deveria estar. A seguir está o código que eu uso para retirar a imagem do banco e jogar na tela.
public void carregarImagens(){
try{
ResultSet rs = conexaoBD.createStatement().executeQuery("Select id, imagem from op_espec_imagens where nr_opesp = '"+nrOP+"'");
while(rs.next()){
final ImageIcon i = new ImageIcon(rs.getBytes("imagem"));
final JButton b = new JButton(i);
b.setMargin(new Insets(0,0,0,0));
b.setToolTipText("Clique na imagem para ampliá-la");
b.setVerticalAlignment(JButton.CENTER);
b.setHorizontalAlignment(JButton.CENTER);
b.setBackground(new Color(204,204,153));
b.setBorder(new EtchedBorder());
b.setForeground(new Color(204,204,153));
b.setFont(new Font("Arial",Font.PLAIN,0));
b.setText(rs.getString("id"));
pnMiniaturas.add(b);
b.setVisible(true);
b.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btFoto.setIcon(i);
btFoto.setText(b.getText());
}
});
}
}catch(Exception e){
e.printStackTrace();
ExceptionEmail.email("FrmFotos","carregarImagens()",e);
}
pnMiniaturas.updateUI();
}