Boas. Eu tenho uma tabelas com informacoes de produto e alguns tens imgens e quando carrego num produto mostra(se tiver) a imagem ao lado numa label. O meu problema é quando um produto nao tem imagem dá-me um erro: java.lang.NUllPointerException. O codigo esta assim:
try{Stringsql="select descricao_material,nome_fornecedor,quantidade, imagem from material where descricao_material = '"+Table_click+"'";pst=con.prepareStatement(sql);rs=pst.executeQuery();if(rs.next()){Stringadd1=rs.getString("descricao_material");jTextField2.setText(add1);Stringadd2=rs.getString("nome_fornecedor");jTextField3.setText(add2);Stringadd3=rs.getString("quantidade");jTextField4.setText(add3);byte[]imagedata=rs.getBytes("imagem");format=newImageIcon(imagedata);jLabel2.setIcon(format);}}catch(Exceptione){JOptionPane.showMessageDialog(null,e);}
Deu, muito obrigado, quando carregava fazia o que era suposto mas dava este erro devido à imagem. E é por isso que tenho mais uma duvida, há alguma maneira de fazer se um produto nao tem uma imagem a label fica vazia ou seja nao aparece nada e quando o produto tem aparece??
L
lucas_duzo
O código para deixar invisível é
jLabel2.setVisible(false);
Agora vc só precisa criar uma lógica, verifique se contém a imagem, ae você define se a label deve ou não ser exibida.
Quando no inicio carrego numa que tem imagem, aparece tudo bem e quando carrego numa que nao tem a imagem desaparece mas depois quando volto a carregar numa que tem ja nao aparece nada.
Aí depende amigão, na teoria deveria funcionar, mas nem toda teoria da certo na prática.
Com esse código que postou, não da pra saber muita coisa de como estas programando. Somente notei que você misturou um pouco as camadas (Visualização e Persistência em uma única classe).
Quando no inicio carrego numa que tem imagem, aparece tudo bem e quando carrego numa que nao tem a imagem desaparece mas depois quando volto a carregar numa que tem ja nao aparece nada.
Tenta fazer esse teste em modo debug, vc terá mais visão do que está acontecendo, qualquer coisa posta alguns códigos mais detalhados que talvez possamos te ajudar.
M
modern
Está a correr tudo bem, quando chamo os produtos que tem imagens nao tou a ver erro nenhum, o problema é que ela nao aparece. O que acha que eu deva fazer??
L
lucas_duzo
Afinal, terá ou não problemas ??? está ocorrendo tudo bem quando os produtos tem imagem, mas depois tem problema pq não aparece ?
Não entendi.
Posta a classe onde você instanciou essa Label.
M
modern
quer que meta a classe toda??
M
modern
Eu apenas chamo a jLabel2 (que pertence à public class pagprincipal extends javax.swing.JFrame) aqui:
privatevoidjTable1MouseClicked(java.awt.event.MouseEventevt){// TODO add your handling code here:introw=jTable1.getSelectedRow();StringTable_click=(jTable1.getModel().getValueAt(row,0).toString());try{Stringsql="select descricao_material,nome_fornecedor,quantidade, imagem from material where descricao_material = '"+Table_click+"'";pst=con.prepareStatement(sql);rs=pst.executeQuery();if(rs.next()){Stringadd1=rs.getString("descricao_material");jTextField2.setText(add1);Stringadd2=rs.getString("nome_fornecedor");jTextField3.setText(add2);Stringadd3=rs.getString("quantidade");jTextField4.setText(add3);byte[]imagedata=rs.getBytes("imagem");if(imagedata!=null){format=newImageIcon(imagedata);jLabel2.setIcon(format);}elseif(imagedata==null){jLabel2.setVisible(false);}}}catch(Exceptione){JOptionPane.showMessageDialog(null,e);}intlinha=jTable1.getSelectedRow();StringTable=(jTable1.getModel().getValueAt(linha,0).toString());try{Stringsql="select descricao_material,nome_fornecedor,quantidade from material where descricao_material = '"+Table+"'";pst=con.prepareStatement(sql);rs=pst.executeQuery();if(rs.next()){Stringadd1=rs.getString("descricao_material");jTextField6.setText(add1);Stringadd2=rs.getString("quantidade");jTextField7.setText(add2);}}catch(Exceptione){JOptionPane.showMessageDialog(null,e);}}
E depois tenho estas variaveis declaradas pertencentes à imagem:
public ImageIcon format=null;
String filename=null;
int s=0;
byte[] person_image=null;