Icone numa classe java

9 respostas
N

Olá pessoal

Preciso de uma ajuda,

Tenho um icone que é na verdade uma classe java, preciso substituir mas não sei como foi feito.

Abaixo vai a classe. Quem Puder me orientar como criar um outro da mesma forma, agradeço muito
a ajuda.

public class BarraMenuIcones {

// barraMenugif (largura=5, altura=34, tipo=1)

byte barraMenuIcones[] = {

-119,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,5,0,0,0,

34,4,3,0,0,0,101,-24,14,88,0,0,0,48,80,76,84,69,-112,-108,-112,

-104,-100,-104,-44,-38,-44,-44,-41,-44,-1,-1,-1,-48,-41,-48,

-48,-44,-48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,

0,0,0,-79,-55,-90,-15,0,0,0,29,73,68,65,84,120,-38,99,116,97,

-8,-61,-52,-84,120,-115,73,80,80,-128,-23,-3,-5,15,3,65,51,0,

33,0,-33,-42,47,-49,29,-43,107,-69,0,0,0,0,73,69,78,68,-82,66,

96,-126,

};
public byte[] getBarraMenuIcones() {

return barraMenuIcones;

}

}

9 Respostas

ViniGodoy

Rapaz… não repita tópicos.

Post original:
http://www.guj.com.br/posts/list/72034.java

N

Ok. Amigo
Mas pode responder a minha dúvida??
Já recebi 25 visitas até aqui e ninguém se prontificou a sanar minha dúvida.
Será que você poderia me ajudar??

ViniGodoy

Se vc está recebendo visitas e ninguém está respondendo é pq ninguém sabe mesmo.

O que você postou é um exemplo de código mau programado. Os valores aí dentro são totalmente alienígenas. Na verdade, se for uma imagem, pode estar em vários formatos…

Eu sugeriria que você excluísse totalmente essa classe, e tentasse refaze-la usando os mecanismos normais de carga de imagens. Claro, antes gere uma imagem com o desenho que é pintado na tela (pode ser a base do Printscreen+cola no paint mesmo).

Também seria útil se vc postasse o trecho do código que isso é usado. Isso poderia dar dicas quanto ao formato da imagem.

N

Olá, ViniGodoy

A imagem é um gif, neste caso uma barra, mas poderia ser um gif qualquer.
Como converter este gif em bytes para em seguida criar a referida classe?

Pode até ser um código mau programado como disse, algo alienígeno.

Mas como se faz??

Tenho um código que o programador tratou todas as imagens desta forma,
preciso substituir algumas e não sei como fazer.

Por isso estou solicitando ajuda de programadores mais experientes, estou apenas um ano
programando em java ainda tenho muito que aprende.

ViniGodoy

Como eu falei, é melhor vc recriar o gif e depois carrega-lo pelos mecanismos normais do java.

Dá uma olhada nas classes ImageIO e ImageIcon.

Você também pode tentar ler esse array de bytes encapsulando ele num ByteArrayInputStream e tentar carrega-lo usando o ImageIO.

T

Escreva um programa que leia o arquivo .GIF que você quer usar dentro de um array de bytes, e crie um arquivo-texto contendo
os bytes em decimal, tal como você mostrou neste programa.

(Ou seja, você vai criar um gerador de programas - parece algo do outro mundo mas no seu caso é muito simples de fazer.)

N

Olá Thingol

Poderia me dar um exemplo, de como converto um arquivo gif qualquer em um array de bytes?

Assim de posse do array de bytes crio o arquivo texto .

Como disse inicialmente ao ViniGodoy, sou iniciante no JAVA e tenho ainda muita estrada pela frente
até me considerar um bom programador.

T

Classe para determinar o comprimento de um arquivo: java.io.File
Método para usar: length
Classe para ler um arquivo binário qualquer: java.io.FileInputStream
Métodos para usar: construtor, read, close
Classe para imprimir os bytes: não precisa usar mais nada que o velho System.out.print e System.out.println, se souber como é que se redireciona a saída da tela para um arquivo (no Windows e no Linux basta rodar seu programa na linha de comando e acrescentar o sinal de ">" para redirecionar para um arquivo qualquer).
O que fazer:

  • Determinar o comprimento do arquivo com o método length.
  • Alocar um array de bytes (new byte[…])
  • Abrir o arquivo binário com new FileInputStream
  • Ler o arquivo com read
  • Fechar o arquivo com close
  • Para imprimir os bytes, percorra do início ao fim do array de bytes, e imprima o valor numérico de cada byte
    com System.out.print.
N

Olá Thingol

Agradeço pela ajuda.

Vou fazer os devidos testes e posto aqui o resultado.

Criado 20 de outubro de 2007
Ultima resposta 21 de out. de 2007
Respostas 9
Participantes 3