USANDO APPLETS NO NETBEANS (WEB APPLICATION)... ...E A APPLET CHAMA ALGUM PACOTE EXTERNO (por Luis Alberto M Palhares de Melo – Julho/2011) PASSO 1 Na estrutura do Netbeans vamos ter: Pacote externo (aqui chamado de jcenpack) Uma applet java (aqui chamada de Teste_Applet) que vai usar jcenpack Uma web application (aqui chamada de Teste_AppletNaWeb) que vai chamar a applet java (que está em Teste_Applet) Veja na figura 1 abaixo, o Netbeans e a aba “Projetos” como vai ficar no final: Figura 1 PASSO 2 Dos diversos pacotes que estão em jcenpack, vamos mais a frente usar na Applet (que estará em Teste_Applet), a função fDataEmDDMMAAAA (veja Anexo 3) que está na classe CvarString dentro do pacote pkcen.util. Veja na Figura 2 Figura 2 PASSO 3 Pronto... supondo que esteja OK com jcenpack, deve-se “Limpar e Construir” (Clean and Build) estes pacotes de utilitários... Veja na Figura 3 a aba “Arquivos” mostrando o arquivo JAR (jcenpack.jar) que será mais à frente embutido na Applet e na webapplication... Figura 3 PASSO 4 Agora vamos construir um “pacote” com diversas applets, das quais, algumas precisarão chamar funções (utilitários) que estão em jcenpak.jar .... (1) Criar o novo aplicativo chamado Teste_Applet (2) Criar um pacote para applets java. No exemplo foi criado pacote01 (3) Dentro de pacote01 criam-se as classes java de applet desejadas. No exemplo foram criadas as applets t01, t02 e t03. t03 usará método de classe que está em jcenpack (4) Note na Figura 4 abaixo (e Anexo 2) a classe (applet) t03 que usa a função fDataEmAAAAMMDD que está em jcenpack.jar Figura 4 Pergunta: Como Teste_Applet vai “acessar” jcenpack.jar ? Resposta: (1) clique com o botão direito do mouse sobre o nome Teste_Applet na aba “Projetos” (2) no menu suspenso clique sobre a opção “Propriedades” (3) aparecerá a janela de propriedades do projeto (4) clique sobre a opção “bibliotecas” e, em seguida sobre o botão “Adicionar JAR/pasta”. As janelas abertas devem ser as que estão mostradas na figura 5 abaixo Figura 5 (5) Após clicar sobre o botão “Adicionar JAR/pasta”, vai aparecer uma janela e, então, deve-se procurar a pasta “dist” do projeto jcenpack. É na pasta dist que se encontra jcenpack.jar. Se este arquivo não existir, é porquê ainda não foi efetuado o PASSO 3 (ver acima). Veja a Figura 6 abaixo referente à captura de jcenpack.jar como biblioteca para o projeto Teste_Applet. Figura 6 (7) Após clicar no botão “open”, jcenpak.jar será incorporado como um arquivo da biblioteca do projeto Teste_Applet. Veja a Figura 7 abaixo: Figura 7 PASSO 5 Vamos agora testar a Applet t03 (apenas a applet... ela ainda não está embutida em webapplication !!!)... (1) clique com o botão direito do mouse sobre o nome Teste_Applet na aba “Projetos” (2) no menu suspenso clique sobre a opção “Limpar e construir” (3) Se foi CONSTRUÍDO COM SUCESSO, então clique com o botão direito do mouse sobre a classe t03.java e escolha a opção de menu suspenso “Executar arquivo”. Veja Figura 8 Figura 8 (4) Se tudo estiver OK, a classe t03 irá acionar apresentar na janela AppletViwer o seguinte (Figura 9) : Figura 9 PASSO 6 Estando tudo OK, proceda “limpar e construir” para o projeto Teste_Applet. Será gerado então o arquivo Teste_Applet.jar (localizado na pasta dist do respectivo projeto). Apenas para visualizar, observe o “mapa” que é oarquivo Teste_Applet.jar. Veja seu conteúdo através da aba “Arquivos”. Veja a Figura 10 abaixo: FIGURA 10 PASSO 7 Agora que temos a applet, vamos construir a webapplication Teste_AppletNaWeb que chamará applets do arquivo Teste_Applet.jar. (1) Após criar a webapplication Teste_AppletNaWeb no Netbeans, codificamos o seguinte dentro do arquivo index.jsp (ver Anexo 2), para testar a applet t03 via web... (ver figura 11) Figura 11 (2) Note na Figura 11, que na webapplication, é fundamental citar na opção archive, o arquivo .jar que contém as applets, e também o arquivo .jar que contém classes e métodos de classes que as applets irão chamar !!!! Sem isso a webapplication não funciona !!!! (3) agora falta embutir na webapplication os arquivos Teste_applet.jar e jcenpack.jar !!! (4) como fazer isso ? Pergunta: Como embutir Teste_Applet.jar e jcenpack.jar na webapplication Teste_AppletNaWeb ? Resposta: (1) clique com o botão direito do mouse sobre o nome Teste_AppletNaWeb na aba “Projetos” (2) no menu suspenso clique sobre a opção “Propriedades” (3) aparecerá a janela de propriedades do projeto. (4) clique sobre a opção “empacotamento” e, em seguida sobre o botão “adicionar arquivo/pasta”. (5) Após clicar sobre o botão “adicionar arquivo/pasta”, vai aparecer uma janela e, então, deve-se procurar a pasta “dist” do projeto jcenpack. É na pasta “dist” que se encontra jcenpack.jar. Se este arquivo não existir, é porquê ainda não foi efetuado o PASSO 3 (ver acima). (5) Em seguida clique novamente sobre o botão “adicionar arquivo/pasta”, desta vez para adicionar Teste_Applet.jar. (6) Ao final, os dois arquivos estarão empacotados no projeto Teste_AppletNaWeb. Veja a Figura 12 abaixo: Figura 12 PASSO 8 Estando tudo OK, proceda “limpar e construir” para o projeto Teste_AppletNaWeb. Será gerado então o arquivo Teste_AppletNaWeb.jar (localizado na pasta dist do respectivo projeto) (1) Apenas para verificar a estrutura do arquivo .war da webapplication, clique na aba “Arquivos” e sobre a pasta Teste_AppletNaWeb expanda o conteúdo da pasta dist e do arquivo Teste_AppletNaWeb.war. Veja a figura 13 abaixo: Figura 13 (2) Agora é possível executar a applet na Web... PASSO 9 Vamos agora testar a Applet t03 chamada pela webapplication através de index.jsp. (1) clique com o botão direito do mouse sobre o nome Teste_AppletNaWeb na aba “Projetos” (2) no menu suspenso clique sobre a opção “Limpar e construir” (3) Se foi CONSTRUÍDO COM SUCESSO, então clique com o botão direito do mouse sobre o arquivo index.jsp e escolha a opção de menu suspenso “Executar arquivo”. Veja Figura 14 Figura 14 (4) Se tudo estiver OK, o arquivo index.jsp será executado num browser e irá apresentar o seguinte (Figura 15) : Figura 15 MINHA DÚVIDA ... Conseguir fazer funcionar eu consegui.... Mas acho que não precisaria empacotar jcenpack.jar no projeto da webapplication (Teste_AppletNaWeb). No projeto da webapplication só precisaria empacotar Teste_Applet... Afinal, jcenpack.jar, que está como biblioteca em Teste_Applet já serviria para t03 (que está em Teste_Applet) acessar CvarString e pegar o método fDataEmAAAAMMDD. Mas quando eu tentei fazer Teste_AppletNaWeb só empacotado com Teste_Applet eu obtenho o seguinte erro. Veja a figura 16 abaixo.... FIGURA 16 Imagino que deva ter alguma forma de só precisar empacotar Teste_Applet.jar e não empacotar jcenpack.jar na webapplication.... Se alguém souber onde está o meu erro por favor me informe. Meu e-mail é: [email protected] ANEXOS Anexo 1 – Listagem do conteudo do arquivo index.jsp package pacote01; import java.applet.Applet; import pkcen.util.CVarString; import java.awt.Graphics; public class t03 extends Applet { CVarString vTeste = new CVarString(); String vData = ""; @Override public void paint(Graphics g) { vData = vTeste.fDataEmAAAAMMDD("27/07/1976"); g.drawString("Data em formato AAAAMMDD = " + vData, 70, 25); g.drawOval(10,10,50,50); g.drawRect(70,70,200,90); g.drawRect(1,1,9,9); g.drawLine(1,1,40,40); } } Anexo 2 – Listagem do conteudo do arquivo t03.java <%@page contentType="text/html" pageEncoding="ISO-8859-1"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Mini Tutorial - Applets no Netbeans</title> </head> <body> <h1>Teste de chamada via Web da applet T03</h1> <hr> <applet code="pacote01.t03" archive="Teste_Applet.jar, jcenpack.jar" width="300" height="200"> </applet> <hr> <p> FIM DO TESTE </body> </html> Anexo 3 – Listagem do conteudo do arquivo CVarString.java package pkcen.util; public class CVarString { public CVarString() { } //-------------------------------------------------------------------------------------------------public String fDataEmAAAAMMDD(String aData) { String vData = aData; int i = 0; int vLen = 0; String vDia = ""; String vMes = ""; String vAno = ""; int vTemBarra = 0; vLen = vData.length() - 1; //---> Tem comprimirnto entre 6 e 10 caracteres ? if ( (vData.length() < 6) || (vData.length() > 10) ) { return aData; } //---> Tem exatamente duas barras (/ ou - ou \) ?? vTemBarra = 0; for (i = 0; i <= vLen; i++) { if ( (vData.charAt(i) == '-') || (vData.charAt(i) == '/') || (vData.charAt(i) == '\\') ) { vTemBarra++; } } if (vTemBarra != 2) { return aData; } //---> OK... prosseguir... if (vLen >= 0) { i = 0; //---> Dia.. vDia = ""; while ( (i <= vLen) && (vData.charAt(i) != '-') && (vData.charAt(i) != '/') && (vData.charAt(i) != '\\')) { vDia = vDia + vData.charAt(i); i++; } if (vDia.length() <= 1) { vDia = "0" + vDia; } //---> Mes.. i++; vMes = ""; while ( (i <= vLen) && (vData.charAt(i) != '-') && (vData.charAt(i) != '/') && (vData.charAt(i) != '\\')) { vMes = vMes + vData.charAt(i); i++; } if (vMes.length() <= 1) { vMes = "0" + vMes; } //---> Ano.. i++; vAno = ""; while (i <= vLen) { vAno = vAno + vData.charAt(i); i++; } if ( (Integer.parseInt(vAno) >= 71) && (Integer.parseInt(vAno) <= 99) ) { vAno = "19" + vAno; } if ( (Integer.parseInt(vAno) >= 0) && (Integer.parseInt(vAno) <= 70) ) { vAno = "20" + vAno; } } //---> Return.. vData = vAno + vMes + vDia; return vData; } } //--- Fim da classe *** FIM ***