[Resolvido]Incompatible types:String cannot be converted to byte[]

11 respostas Resolvido
java-seprogramaçãojava
F

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();
}

11 Respostas

C

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

F

essa é minha duvida como vou pegar bytes a imagem que esta em uma lbl ?

C

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();
F

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();
}
C

Virificou se a imagem esta null?
verificou se lblImagemUsuario esta nas duas telas?
verificou se existe algum componente tampando a imagem?
etc

F

quando ele é redirecionado para pagina de Cadastro_Cliente , a label que era pra mostrar a imagem fica assim:

C

oque isso faz?, post o codigo

F

ele pega a imagem e coloca em um Label

F

ele pega a imagem e coloca em um Label

C
Solucao aceita

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());
F

funcionou man obrigado, você é o cara

Criado 4 de dezembro de 2017
Ultima resposta 4 de dez. de 2017
Respostas 11
Participantes 2