Imagens diretamente do banco de dados firebird

0 respostas
J

Olá pessoal, sou novato em em java, minha duvida pode ser basica, mas estou quebrando a cabeça a dois dias,
bem vou explicar o maximo possivel minha duvida, tenho um frame que deve ficar trocando uma imagem de dez em dez minutos,
ja implementei um timer para isso, o problema é que essas imagens estão em um banco de dados firebird, eu consegui fazer com que
funcione baixando as imagens do banco cada vez que a aplicação inicie, colocando-as em uma pasta e apartir dela carregando as imagens,
mas tem um porém estas imagens podem ser mudadas por um aplicativo retaguarda e assim só posso carregar as novas imagens ao reiniciar
a aplicação, e não é assim que o aplicativo deve funcionar, bem estou tentado implementar o seguinte código para resolver o problema, mas não
aparece nenhuma imagem no frame, nem se quer um erro, se puderem me ajudar agradeço:

public ImageIcon[] listaImg(){ //Nesta funçao carrego as imagens do banco, para uma lista de imagens
          int qtd = 0;
          ImageIcon[] imageIcon = new ImageIcon[verificaNumReg()];
          SQL = "SELECT * FROM PROTECAO_TELA";
          try
          {
             pstm = Conexao.Conecta().prepareStatement(SQL);
             rs = pstm.executeQuery();
             while(rs.next()){
                imageIcon[qtd] = new ImageIcon(rs.getBlob("IMAGEM").getBytes(1, (int)rs.getBlob("IMAGEM").length()));
                qtd++;
             }
          }
          catch (SQLException ex)
          {
            func.Informacao(this,ex.getMessage());
          }
          return imageIcon;
   }
    
    
    public int verificaNumReg(){ // esta função apenas retorna o numero de registros da tabela, para a criação da lista de imagens com tamanho correto
          int qtd = 0;
          SQL = "SELECT NOME FROM PROTECAO_TELA";
          try
          {
             pstm = Conexao.Conecta().prepareStatement(SQL);
             rs = pstm.executeQuery();
             while(rs.next()){
                qtd++;
             }
          }
          catch (SQLException ex)
          {
            func.Informacao(this,ex.getMessage());
          }
          return qtd;
   }
    
    void colocaImagem(ImageIcon img) {//Aqui coloco a imagem em um JLabel
       try
       {
         jFundo.setIcon(img);
         jFundo.repaint();
       }
       catch(Exception e)
       {
         func.Informacao(this, "Problemas ao carregar imagem de fundo...");
       }
    }
    
    
    public void novatela(){

         ImageIcon[] listaIMGs= listaImg();
         if(tela>=listaIMGs.length){
             tela = 0;
         }
         colocaImagem(listaIMGs[tela]);
         tela++;
         if(!t.isRunning()){
             t.start();
         }
    }
Criado 21 de junho de 2011
Respostas 0
Participantes 1