Informática Numaboa - Tutoriais e Programação
O primeiro applet
Ter 7 Abr 2009 11:00 |
- Detalhes
- Categoria: Aprenda Java fazendo applets
- Atualização: Terça, 07 Abril 2009 13:36
- Autor: vovó Vicki
- Acessos: 8334
Nada de Hello World! Vamos por a mão na massa fazendo um applet bem simples que mostra uma imagem da nossa escolha. Os pontos principais deste tutorial são:
- Criar a estrutura básica de um applet
- Tratar parâmetros
- Substituir métodos
- Inserir o applet num documento HTML
O código Java
Inserção no documento HTML
O applet funcionando
Compilando o código Java com qualquer compilador disponível (por exemplo, o javac.exe do kit desenvolvedor) será gerado um arquivo de bytecodes com o mesmo nome da classe, ou seja, safeImg.class.
Crie um documento HTML e insira o applet como mencionado acima. Indique o nome de uma imagem do tipo gif ou jpg. Neste exemplo foi usado o gif animado AnimJava.gif. O applet precisa ter, no mínimo, a largura (width) e a altura (height) da imagem indicada. Não se esqueça de por o arquivo da imagem mencionada no parâmetro "imagem" no mesmo diretório onde está a classe.
Chame o documento num browser e aprecie o resultado do seu trabalho.
Explicações que podem ser úteis
Qual a vantagem de um applet tão bobinho? A primeira é a de aprender como se faz applets, outra é proteger parcialmente suas imagens: o usuário comum não vai conseguir copiá-las apenas com um clique de mouse. Experimente... e tudo isto com um applet que tem menos de 1 Kb!
De acordo com os números das linhas do código Java acima, seguem algumas observações:
Linha 1: Importamos o pacote java.applet.* com todas as suas classes para podermos fazer a extensão da classe Applet e criar nosso próprio applet.
Linha 2: Também importamos o pacote java.awt.* com todas as suas classes para apoiar os tipos Image (referênciado na linha 5) e Graphics (referênciado nas linhas 16 e 20).
Linha 4: Vamos dissecar a declaração public class safeImg extends Applet:
- public => torna a nossa classe pública para que possa ser acessada por outros aplicativos java, ser incluída num documento HTML ou ser acessada através de JavaScript.
- class => é a declaração de que queremos construir uma nova classe (é o chamado construtor de classes).
- safeImg => é o nome da classe que será construída.
- extends => indica que queremos "clonar" uma classe pré-existente (está no pacote java.applet.*).
- Applet => é a classe que servirá de modelo de "clonagem", ou seja, a classe que será estendida ( o nome da classe inicia-se com A maiúsculo - Applet e não applet!). Após esta declaração, tudo o que estiver contido entre as chaves { e } fará parte da classe declarada.
Linha 5: Na declaração de variáveis não usamos nenhum modificador (veja no tutorial A estrutura básica de um applet), restringindo seu escopo à classe safeImg (a única do nosso pacote).
Image imagem = null; inicializa a variável de nome imagem, do tipo Image (definida no pacote java.awt.* que importamos), e atribuímos a ela o valor null. Esta variável será utilizada para guardar a imagem que será mostrada no applet.
Declaramos a variável dentro da nossa classe e fora de qualquer método para que ela possa ser acessada por qualquer um dos métodos definidos na nossa classe, ou seja, ela pertence à classe safeImg e a todos os métodos desta classe.
Sabemos que a classe Applet possui vários métodos. Podemos utilizar os métodos herdados sem alterá-los, podemos substituí-los ou podemos ampliá-los (veja no tutorial A estrutura básica de um applet).
Linha 7: O primeiro método que um applet executa, e apenas uma vez ao ser carregado, é o método init(). É aí que substituímos o valor null da variável imagem se o parâmetro enviado ao applet estiver correto. Caso contrário, imagem continuará sendo null.
Linha 9: Usamos o método getParameter("nome do parâmetro"), que retorna uma string com o valor do parâmetro indicado. A string de retorno é atribuída à variável nomeImg, do tipo String, inicializada dentro do método init() por que será utilizada apenas por este método. Nosso bloco de código HTML <applet>...</applet> contém o parâmetro "imagem" cujo valor é "AnimJava.gif". Se tudo correr de acordo, o valor de nomeImg será "AnimJava.gif"; se ocorrer um erro, nomeImg será null.
Linha 12: Testamos o valor de nomeImg através de if(nomeImg != null), ou seja, traduzindo, se (nomeImg não for igual a null). Se nomeImg for igual a null, a próxima linha não é executada. Se for diferente de null, imagem = getImage(getCodeBase(), nomeImg); será interpretado. Vamos por partes:
- imagem é a variável do tipo Image declarada anteriormente.
- getImage() é um método que retorna uma imagem do tipo gif ou jpg.
- getCodeBase() retorna o endereço (URL) onde a classe está localizada. É por este motivo que o arquivo da imagem precisa estar no mesmo diretório que a classe do nosso applet.
Depois do método init(), que nós substituímos, o applet executa automaticamente o método start(). Como start() não foi substituído, os procedimentos automáticos vão se sucedendo até chegar nos métodos update() e paint() que desenharão, respectivamente, o fundo e o conteúdo da janela do applet. Toda vez que o applet precisar ser atualizado graficamente, estes dois métodos são invocados.
Linha 16: Como não há necessidade de toda vez redesenhar o fundo, substituímos o método update() para não perder tempo com coisas desnecessárias. Nosso novo update() simplesmente redireciona a execução para o método paint(), deixando o fundo intacto.
Linha 20: O método paint() também é substituído para que desenhe nossa imagem toda vez que for necessário. O parâmetro Graphics que o método paint() recebe é a área que deve ser desenhada, juntamente com seus atributos.
Graphics possui o método drawImage(
Caso a variável imagem seja null, nada acontece e a "telinha" do this (desculpe, do applet) fica cinza e sem imagem.
Considerações finais
Concordo que tem texto demais neste tutorial mas... qualquer criança, antes de aprender a falar, precisa escutar muuuiiiito. Se quisermos falar javanês um dia, toca escutar
À medida que tenhamos uma base sólida e conceitos bem definidos, nem explicação mais é preciso: basta dar uma olhada no código fonte para saber do que se trata.
Este tutorial está disponível para download na seção [Downloads / Tutoriais / Java].
Grande abraço e sucesso!
Vó Vicki