Estou desenvolvendo uma aplicação java para desktop em que apresenta a imagem do usuário cadastrado no banco de dados, em um TextView, mas ao pegar o conteudo da lblImagemUsuario.getText()
que contem a imagem e passar para outra tela chamada Cadastro_Cliente pelo construtor e com o evento jLabel7MouseClicked
ele apresenta esse erro Incompatible types:String cannot be converted to byte[]
public Principal(String user,byte[] imagem) throws ClassNotFoundException {
initComponents();
ManipularImagem.exibiImagemLabel(imagem, lblImagemUsuario);
lblUsuario.setText(user);
this.setExtendedState(MAXIMIZED_BOTH);
setLocationRelativeTo(null);
}
private void jLabel7MouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
Cadastro_Cliente pro = new Cadastro_Cliente(lblUsuario.getText(),lblImagemUsuario.getText());//Incompatible types:String cannot be converted to byte[]
pro.setVisible(true);
}
Tela de Cadastro_Cliente
public Cadastro_Cliente(String user,byte[] imagem) {
initComponents();
ManipularImagem.exibiImagemLabel(imagem, lblImagemUsuario);
setExtendedState(JFrame.MAXIMIZED_BOTH);
jLabel24Usuario.setText(user);
txtCodigo.setText("1");
Codigo();
}
Ola,
O construtor Cadastro_Cliente espera receber bytes e voce esta passando string.
quando voce faz getText voce esta pegando o texto e não os byte
essa é minha duvida como vou pegar bytes a imagem que esta em uma lbl ?
Tente
Icon icon = label.getIcon();
BufferedImage image = new BufferedImage(icon.getIconWidth(),icon.getIconHeight(),BufferedImage.TYPE_INT_RGB);
ByteArrayOutputStream b = new ByteArrayOutputStream();
ImageIO.write(image, "jpg", b );
byte[] imageInByte = b.toByteArray();
campelo.m:
Icon icon = label.getIcon();
BufferedImage image = new BufferedImage(icon.getIconWidth(),icon.getIconHeight(),BufferedImage.TYPE_INT_RGB);
ByteArrayOutputStream b = new ByteArrayOutputStream();
ImageIO.write(image, “jpg”, b );
byte[] imageInByte = b.toByteArray();
coloquei assim mas quando vou para tela de Cadastro_Cliente não mostra a imagem
private void jLabel7MouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
try {
Icon icon = lblImagemUsuario.getIcon();
BufferedImage image = new
BufferedImage(icon.getIconWidth(),icon.getIconHeight(),BufferedImage.TYPE_INT_RGB);
ByteArrayOutputStream b = new ByteArrayOutputStream();
ImageIO.write(image, "jpg", b );
byte[] imageInByte = b.toByteArray();
Cadastro_Cliente pro = new Cadastro_Cliente(lblUsuario.getText(),imageInByte);
pro.setVisible(true);
} catch (IOException ex) {
JOptionPane.showMessageDialog(null, "erro"+ex);
}
}
Tela Cadastro_Cliente
public Cadastro_Cliente(String user,byte[] imagem) {
initComponents();
//setLocationRelativeTo(null);
ManipularImagem.exibiImagemLabel(imagem, lblImagemUsuario);
setExtendedState(JFrame.MAXIMIZED_BOTH);
jLabel24Usuario.setText(user);
txtCodigo.setText("1");
Codigo();
}
Virificou se a imagem esta null?
verificou se lblImagemUsuario esta nas duas telas?
verificou se existe algum componente tampando a imagem?
etc
quando ele é redirecionado para pagina de Cadastro_Cliente , a label que era pra mostrar a imagem fica assim:
oque isso faz?, post o codigo
ele pega a imagem e coloca em um Label
ele pega a imagem e coloca em um Label
Teste assim:
public Cadastro_Cliente(String user,Icon icon) {
initComponents();
//setLocationRelativeTo(null);
// ManipularImagem.exibiImagemLabel(imagem, lblImagemUsuario);
lblImagemUsuario.setIcon(icon)
setExtendedState(JFrame.MAXIMIZED_BOTH);
jLabel24Usuario.setText(user);
txtCodigo.setText("1");
Codigo();
}
Cadastro_Cliente pro = new Cadastro_Cliente(lblUsuario.getText(), lblImagemUsuario.getIcon());
1 curtida
funcionou man obrigado, você é o cara