publicImagegetImagens(Integerid)throwsSQLException,FileNotFoundException,IOException{Stringsql="SELECT foto_cliente FROM Cliente WHERE id_cliente = ?";PreparedStatementstmt=getConexao().prepareStatement(sql);stmt.setInt(1,id);ResultSetrs=stmt.executeQuery();byte[]imgBytes=rs.getBytes("foto_cliente");OutputStreamout=newFileOutputStream("arquivo.jpg");out.write(imgBytes);out.close();System.out.println("Tamanho da imagem: "+imgBytes.length);imagem=Toolkit.getDefaultToolkit().createImage(imgBytes);// recupera um array de bytes e cria uma images returnimagem;}essafuncaonaodaerroporemnaoretornaaimagemfizissoaquijButton2.setIcon(newImageIcon(clienteD.getImagens((2))));enaosetaoiconecomaimagem
fabiodurgante
poremseeuusaressafuncaopublicImagegetImagens(Clientecli)throwsSQLException,FileNotFoundException,IOException{Stringsql="SELECT foto_cliente FROM Cliente WHERE id_cliente = ?";PreparedStatementstmt=getConexao().prepareStatement(sql);stmt.setInt(1,cli.getid_Cliente());ResultSetrs=stmt.executeQuery();if(rs.next()){byte[]imgBytes=rs.getBytes(1);OutputStreamout=newFileOutputStream("arquivo.jpg");out.write(imgBytes);out.close();System.out.println(out);System.out.println("Tamanho da imagem: "+imgBytes.length);}Filesourceimage=newFile("arquivo.jpg");imagem=ImageIO.read(sourceimage);cli.setFoto_Cliente(imagem);rs.close();stmt.close();returnimagem;}echamarassimjButton2.setIcon(newImageIcon(clienteD.getImagens(lista.get(2))));aielecriaoarquivonodiscocorespondenteao2ºclientecomonafuncaoanteriormenteeaisimfuncionaporemnaoquerocriararquivoquerofazerdiretoalguemsujeraalgumacoisa?????????
M
marcobiscaro2112
Você já tentou fazer dessa forma:
publicImageIcongetImagens(Clientecli)throwsSQLException{Stringsql="SELECT foto_cliente FROM Cliente WHERE id_cliente = ?";PreparedStatementstmt=getConexao().prepareStatement(sql);stmt.setInt(1,cli.getid_Cliente());ResultSetrs=stmt.executeQuery();ImageIconimagem=null;if(rs.next()){imagem=newImageIcon(rs.getBytes(1));}rs.close();stmt.close();returnimagem;}
exatamente isso cara mas como tudo nada é prefeito POREM so funciona se estiver cadastrado no bannco um GIF somente com gif mas funciona perfeito fiquei 2 dias mechendo nisso e nao iria conseguir sem ajuda ,
muito obrigado pela ajuda!!!
M
marcobiscaro2112
Disponha. Mas quanto ao formato, tem certeza que é só com gif que funciona? Olha a documentação do construtor ImageIcon:
Deveria funcinar com GIF, PNG e JPEG…
fabiodurgante
olha so cara o negocio aqui
jButton2.setIcon(clienteD.getImagen(4));fazendoissofuncionasetaperfeitopegandodobancomasseguinteprivatevoidpreencheTabelaNomeCliente(){DefaultTableModelmodelo=newjavax.swing.table.DefaultTableModel(newObject[][]{},newString[]{"Código","Nome","Estado","CPF","Data","Foto"});finalClienteDaoclienteD=newClienteDao();tabela.setModel(modelo);List<Cliente>lista=clienteD.listar(campo_pra_pesquisaNome.getText());//aqui pega o campo por parametro pra pesquiza// jButton2.setIcon(new ImageIcon("C:\teste\excluir.gif")); // jButton2.setIcon(new ImageIcon(clienteD.getImagens((2))));jButton2.setIcon(clienteD.getImagen(4));tabela.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);tabela.getColumnModel().getColumn(0).setPreferredWidth(50);tabela.getColumnModel().getColumn(1).setPreferredWidth(140);tabela.getColumnModel().getColumn(2).setPreferredWidth(45);tabela.getColumnModel().getColumn(3).setPreferredWidth(100);tabela.getColumnModel().getColumn(4).setPreferredWidth(240);tabela.getColumnModel().getColumn(5).setPreferredWidth(220);tabela.setRowHeight(100);Stringdata=("EEEE, dd 'de' MMMM 'de' yyyy, HH:mm:ss");StringdataFormatada;SimpleDateFormatformata=newSimpleDateFormat(data);for(finalClientecli:lista){tabela.getColumnModel().getColumn(5).setCellRenderer(newDefaultTableCellRenderer(){publicComponentgetTableCellRendererComponent(JTabletable,Objectvalue,booleanisSelected,booleanhasFocus,introw,intcolumn){this.setOpaque(true);this.setText(value.toString());this.setIcon(newImageIcon(clienteD.getImagen(4)));//AQUI DA ERRO NO ImageIcon cannot find symbolreturnthis;}});dataFormatada=formata.format(cli.getData_Cliente());modelo.addRow(newString[]{cli.getid_Cliente().toString(),cli.getNome_Cliente(),cli.getEstado_Cliente(),cli.getCpf_Cliente(),dataFormatada,// cli.getData_Cliente().toString(), "",});}}
essa funcao constroi uma tabela e coloca a imagem do banco no jtable porem da erro aqui this.setIcon(new ImageIcon(clienteD.getImagen(4)));
M
marcobiscaro2112
Não precisa chamar o construtor de ImageIcon, porque o método getImagen já retorna um objeto dessa classe. Basta usar:
this.setIcon(clienteD.getImagen(4));
fabiodurgante
isso mesmo cara valeu denovo so o negocio aqui minha jtable
privatevoidpreencheTabelaNomeCliente(){DefaultTableModelmodelo=newjavax.swing.table.DefaultTableModel(newObject[][]{},newString[]{"Código","Nome","Estado","CPF","Data","Foto"});finalClienteDaoclienteD=newClienteDao();tabela.setModel(modelo);List<Cliente>lista=clienteD.listar(campo_pra_pesquisaNome.getText());//aqui pega o campo por parametro pra pesquizatry{//aqui pega o campo por parametro pra pesquiza// jButton2.setIcon(new ImageIcon("C:\teste\excluir.gif"));// jButton2.setIcon(new ImageIcon(clienteD.getImagens((2))));jButton2.setIcon(clienteD.getImagen((4)));}catch(SQLExceptionex){Logger.getLogger(ConsultarCliente.class.getName()).log(Level.SEVERE,null,ex);}tabela.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);tabela.getColumnModel().getColumn(0).setPreferredWidth(50);tabela.getColumnModel().getColumn(1).setPreferredWidth(140);tabela.getColumnModel().getColumn(2).setPreferredWidth(45);tabela.getColumnModel().getColumn(3).setPreferredWidth(100);tabela.getColumnModel().getColumn(4).setPreferredWidth(240);tabela.getColumnModel().getColumn(5).setPreferredWidth(220);tabela.setRowHeight(100);Stringdata=("EEEE, dd 'de' MMMM 'de' yyyy, HH:mm:ss");StringdataFormatada;SimpleDateFormatformata=newSimpleDateFormat(data);for(finalClientecli:lista){tabela.getColumnModel().getColumn(5).setCellRenderer(newDefaultTableCellRenderer(){publicComponentgetTableCellRendererComponent(JTabletable,Objectvalue,booleanisSelected,booleanhasFocus,introw,intcolumn){this.setOpaque(true);this.setText(value.toString());try{this.setIcon(clienteD.getImagen(cli.getid_Cliente()));}catch(SQLExceptionex){Logger.getLogger(ConsultarCliente.class.getName()).log(Level.SEVERE,null,ex);}returnthis;}});dataFormatada=formata.format(cli.getData_Cliente());modelo.addRow(newString[]{cli.getid_Cliente().toString(),cli.getNome_Cliente(),cli.getEstado_Cliente(),cli.getCpf_Cliente(),dataFormatada,// cli.getData_Cliente().toString(), "",});}}
ai ele so coloca na coluna Foto o icone do primeiro registro quando eu faço uma pesquiza por um unico nome ai sim da certo mas quando tem varios no jtable ele sempre pega o icone do primeiro para todos os outros sabes aonde q ta o BUG ???
cada vez q passa no for eu seto o icone novo teria que funcionar