Você está na página 1de 127

Mdulo de apostila : Java Nmero : 001 Nmero de pginas :

expressamente proba a reproduo total ou parcial do contedo desta apostila sem a prvia autorizao da High Tec Informtica, estando o infrator sujeito as penalidades previstas em Lei. Este mdulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefcio dos proprietrios das marcas, sem nenhuma inteno de atingir seus direitos.

A High Tec Informtica no comercializa a nenhum ttulo softwares, sendo que os mesmos devero ser adquiridos pelos alunos atravs dos distribuidores credenciados.

Vamos iniciar o estudo do Java, conhecendo um pouco da histria do mesmo. Em 1991, um grupo de funcionrios da Sun foi remanejado para uma filial desta, conhecida por Hill Road. Como sua primeira tarefa, tinham como objetivo o desenvolvimento de um projeto conhecido por Projeto Green, que tinha como principal objetivo criao de tecnologias modernas de software para empresas eletrnicas de consumo. Uma das primeiras concluses durante o processo de desenvolvimento foi a de que o sistema no poderia ficar preso a plataformas, pois os clientes no estavam interessados no tipo de processador que estavam utilizando, e fazer uma verso do projeto para cada tipo de sistema seria invivel em todos os sentidos, quando surgiu ento como soluo o sistema operacional GreenOS, com a linguagem de programao Oak. Em 1993 surgiu uma oportunidade para o grupo Green, que foi procurado pela empresa Time-Warner, que estava em busca de sistemas operacionais de decodificadores e tecnologias de video-on-demand (Conceito de TV a cabo na qual voc no espera a hora da programao da emissora. Voc mesmo determina qual programa que quer ver no momento; ou seja, toda a programao est disponvel a qualquer momento). Tal fato ocorreu no mesmo perodo em que o NCSA lanou o MOSAIC 1.0, o primeiro navegador grfico para Web. A FirstPerson apostou nos testes de TV da Time-Warner, mas esta empresa preferiu optar pela tecnologia oferecida pela Silicon Graphics. Depois de mais um fracasso de acordo com a 3DO a FirstPerson (novo nome do grupo Green) dissolveu-se, sendo que parte do pessoal foi trabalhar para a Sun Interactive com servidores digitais de vdeo e, a equipe restante continuou os trabalhos do projeto na Sun. Uma das caractersticas deste grupo de profissionais era o consumo em grande quantidade de caf enquanto estavam trabalhando ... em maio de 1995 a Sun anunciou um ambiente denominado Java, homenagem s xcaras de caf, que obteve sucesso graas a incorporao deste ambiente a browsers populares como o Netscape Navigator e padres tridimensionais como o VRML (Virtual Reality Modeling Language - Linguagem de Modelagem para Realidade Virtual). A Sun considera o sucesso do Java na Internet como sendo o primeiro passo para utiliz-lo em decodificadores da televiso interativa, em dispositivos portteis e outros produtos eletrnicos de consumo - exatamente como o Java tinha comeado em 1991. Sua natureza porttil e o projeto robusto permitem o desenvolvimento para mltiplas plataformas, em ambientes to exigentes como os da eletrnica de consumo. Quais as vantagens de se utilizar o Java? Existem muitas, dentre elas destacamos: Portabilidade: O Java uma linguagem interpretada, ou seja, pode ser executado em qualquer plataforma ou equipamento que possua um interpretador Java, e que tenha sido especialmente compilado para o sistema a ser utilizado. Robustez: os recursos da linguagem e do ambiente para o tempo de execuo garantem alta confiabilidade no cdigo gerado. Segurana: alm de proteger o sistema do cliente contra possveis ataques no intencionais, o ambiente tambm deve proteger contra aes premeditadas. Vrios

estudados, avanos e novas tecnologias esto sendo aplicados para que a linguagem se desenvolva nesse sentido. Orientao a Objetos: Java uma linguagem totalmente orientada a objetos, o que permite a herana e a reutilizao de cdigos de forma dinmica e esttica. Dinamismo: por ter um projeto orientado a objetos, o dinamismo faz parte da natureza do Java, o que permite a extensibilidade durante a execuo. Alto Desempenho: a linguagem Java suporta vrios recursos de alto desempenho, entre eles destacamos o multithreading, compilao just-in-time, utilizao de cdigo nativo, entre outros. O byte-code (iremos estudar sobre este item adiante) do Java possui um desempenho aproximadamente 15 vezes inferior que o de um cdigo nativo do processador (entenda como linguagem de mquina), porm comparando-se com linguagens de Script ( HTML, JavaScript ou o VBScript), ou at mesmo o prprio bytecode do VB (Visual Basic), possui uma performance muitas vezes superior. Esta performance, pela quantidade de esforos aplicados sobre a sua otimizao pelos desenvolvedores de Java, est cada vez mais sendo aumentada, podendo um dia comparar-se com uma linguagem compilada para o processador em especfico (linguagem nativa). Vale lembrar que j foram criados processadores para suportar diretamente o byte-code da linguagem Java. Facilidade: derivada da linguagem C e C++, possui um vasto material na Web para pesquisa e aprendizado (infelizmente a maior parte em ingls), o programador no tem a necessidade de gerenciar a memria e os ponteiros, etc...

E ento, est convencido a utilizar o Java? A WWW manifestou-se como vrus, nasceu discretamente, e cresceu repentinamente, se expandindo em um prazo de tempo muito curto pelo mundo inteiro. As empresas encontram na Rede Mundial uma nova maneira de publicidade, as pessoas, uma nova maneira de comunicao. Com o grande acesso, cada dia mais se duplicam os nmeros de endereos na internet, cada qual desejando chamar ateno dos usurios (entre tantas pginas da Web) ao servio ou produto desenvolvido pela empresa. Isso exigiu e exige talento para diferenciar sua pgina das demais (o que no uma tarefa muito fcil). Quanto maior a competio, melhor dever ser a qualidade do seu site. At que sugiram as pginas interativas, as chamadas Web inteligentes, criadas pelos programadores em linguagens tais como (C, C++, Visual Basic), que permitiam a interao com o usurio. Parecia tudo muito simples, porm as dificuldades logo surgiram. As linguagens de programao convencionais no so projetadas a princpio para serem executadas na Web, por esse motivo era necessrio que o programador criasse suas prprias funes, o que resultaria em um trabalho rduo para realizar a simples tarefa de carregar imagens no seu navegador. Existe o problema tambm dos diferentes ambientes, ou seja, plataformas. Pois executveis de programas convencionais no podem ser rodados em diferentes plataformas, e no so suportados por diferentes computadores. O java surgiu prometendo uma soluo para solucionar todos esses problemas dos desenvolvedores para Web. Foi criado uma linguagem de multiplataforma que identifica o tipo de computador host ao servidor e envie o executvel especfico para o mesmo. Resumindo, o Java uma linguagem de multiplataformas, independe de ambiente. Poderemos criar executveis para diferentes

ambientes, tais como Windows, Macintosh, Linux. Abaixo seguem dois grficos comparando um programa tradicional de um programa Java: Programa Tradicional

Compilador Windows Arquivo binrio Windows Arquivo binrio Mac

Mac

Linux

Arquivo binrio Linux

Programa Java:
Bytecode independente da plataforma Interpretada (Windows) Interpretada (Mac) Interpretada ( Linux)

Alm deste conceito, o Java gera executveis pequenos, que permitem o rpido carregamento da pgina Web, d maior importncia segurana permitindo que o computador servidor tenha controle sobre o que ser acessado pelo computador cliente, especificando o que poder ou no ser acessado pelo mesmo. O Java uma linguagem de programao feita para ser utilizada em um ambiente de 32 bits grfico (portanto, no funciona no Windows 3.1/3.11 ou no MS-DOS puro). Possui um compilador muito pesado e torna-se lento demais quando aplicado a mquinas de processamento mais simples, como um 486 (que possui um processamento escalar de uma via ou uma instruo sendo executada por ciclo de clock). O ideal utilizar, tanto para a compilao quanto para a execuo de programas Java, uma mquina Pentium ou superior (possui um processamento superescalar de duas vias - paralelismo, duas instrues sendo executadas no mesmo ciclo de clock). Isto no significa que um programa feito em Java no funcione numa mquina 486.

muito importante destacar que o Java no uma linguagem exclusiva de programao para a Web. Com o Java poderemos gerar aplicativos comerciais complexos. Atravs da API de banco de dados do Java, conhecida por JDBC, o desenvolvedor tem uma interface padro para acessar banco de dados relacionais. Citamos que uma das vantagens do Java a orientao a objetos, vamos falar um pouco mais sobre este tpico em especfico, para isso, vamos estudar as caractersticas da mesma. Para compreender corretamente o que significa, vamos comear estudando as classes. CLASSE Classe a descrio de um grupo de objetos que possuam atributos e comportamentos iguais, e que se relacionam da mesma forma com os outros objetos. Para uma rpida compreenso, a estrutura de uma classe pode ser comparada com uma estrutura em C (struct), sendo que, entre outras caractersticas, uma classe pode possuir mtodos (funes) e implementaes de segurana (nveis de acesso). Os atributos das classes seriam as variveis da estrutura. OBJETO Um objeto no nada mais do que uma instncia de uma classe, ou seja, um exemplar da classe instanciada representado na memria. Fazendo uma comparao com a estrutura da linguagem C (struct), podemos dizer que a classe seria a estrutura e o objeto seria a varivel da estrutura. IDENTIDADE Embora os objetos da mesma classe tenham as mesmas caractersticas e funes, e talvez at os mesmos valores de atributos, cada nova instncia da classe representada separadamente na memria. ENCAPSULAMENTO Tcnica que permite ocultar os atributos da classe, sendo que somente os mtodos da classe prpria podem ler ou alterar estes atributos. Isto faz com que no haja necessidade de saber como a classe foi implementada internamente, deixando que os mtodos internos da classe se preocupem com isto.

HERANA A herana permite que as classes compartilhem os seus atributos e mtodos com outras classes, utilizando para isto um relacionamento esquematizado de forma hierrquica. Na herana existem dois tipos de classes que devem ser levadas em considerao: superclasse: a classe da qual uma outra classe (subclasse) herda as suas caractersticas. subclasse: a classe que herdou as caractersticas de uma outra classe (superclasse).

Exemplo: java.lang.Object | +----java.awt.Component | +----java.awt.Container | +----java.awt.Window | +----java.awt.Dialog | +----java.awt.FileDialog POLIMORFISMO Uma subclasse pode implementar novamente um mtodo ou atributo j implementado por uma classe da qual herdeira.

Agora que voc j tem uma pequena noo do que o Java e como o mesmo opera, nosso prximo passo saber como obte-lo na Web, para isso, siga os passos abaixo: 1. Acesse o site http://java.sun.com/j2ee/download.html, ser apresentada o seguinte contedo no seu navegador:

2. Clique sobre o link J2EETM SDK", voc ser levado a seguinte janela:

3. Aqui voc tem algumas notas sobre a verso, principalmente sobre a compatibilidade da mesma que, compatvel com as plataformas: Solaris, Windows NT, Windows 2000 Professional e Linux. Caso voc esteja utilizando o Windows 98 ou ME, dever procurar uma verso compatvel no site para download. No tente instalar esta nestes sistemas operacionais. Clique ento no link Software e Documentation, voc ser levado a seguinte janela:

4. Neste ponto voc dever selecionar a plataforma que ir utilizar para executar o sistema. No nosso caso estamos realizando o download da verso para o Windows 2000. Selecione a sua na caixa de seleo SELECT A PLATFORM e em seguida, clique no boto CONTINUE, voc ser levado a seguinte janela:

5. Nesta pgina voc tem na verdade as clusulas e condies para o uso do software que est baixando. Ao final desta pgina, clique sobre o boto ACCEPT. Voc ser ento levado a seguinte pgina:

6. Neste ponto, basta voc clicar no boto FTP Download para que o download seja iniciado, sendo ento apresentada a seguinte janela:

7. Selecione a opo SAVE THIS PROGRAM TO DISK, ser ento apresentada a seguinte janela:

8. Escolha uma pasta onde o arquivo ser salvo e em seguida clique no boto SALVAR. O Download finalmente ter inicio, onde ser apresentada a seguinte janela apresentando o progresso da operao:

9. Ao final deste procedimento, ser apresentada a seguinte janela:

10. Clique no boto CLOSE. 11. Clique agora no boto INICIAR ... EXECUTAR; 12. Posicione o sistema na pasta onde voc salvou o arquivo que acabou de baixar, selecione o mesmo e clique em ABRIR;

13. Ao clicar no boto de ABRIR, conforme orientado no procedimento anterior, o sistema ir retornar janela EXECUTAR, clique ento no boto OK:

14. O procedimento de instalao tem inicio, sendo exibida a seguinte janela:

15. Aqui o sistema est descompactando os arquivos necessrios instalao. Ao final deste procedimento, ser apresentada a seguinte janela:

16. Esta primeira janela a famosa Boas Vindas. Clique no boto NEXT, ser apresentada a seguinte janela:

17. Esta janela contm os termos de licena e uso do Software em instalao, caso concorde com os mesmos, clique no boto YES, ser ento apresentada a seguinte janela:

18. Nesta janela voc dever indicar a pasta na qual o aplicativo ser instalado. Aconselhamos deixar a opo padro. Clique em seguida em <NEXT>, ser ento apresentada a seguinte janela:

19. Na janela acima voc dever marcar o(s) componente(s) que ser(o) instalado(s). Deixe como mostra a figura acima. Clique no boto NEXT, ser ento apresentada a seguinte janela:

20. A barra de progresso indica o andamento do processo de instalao do software em questo. Ao final deste procedimento ser apresentada a seguinte janela:

21. A janela acima indica que a instalao foi finalizada. Clique no boto FINISH, a instalao est concluda.

Antes de partir para o estudo da linguagem Java importante conhecer alguns princpios bsicos do ambiente de desenvolvimento do Java. Os sistemas em Java so formados por vrias partes, conforme podemos observar na listagem abaixo: Um ambiente; A linguagem; As Applications Programming Interface APIs; Bibliotecas de classes.

Este esquema opera atravs das seguintes fases: 1. A fonte do programa (simplesmente programa) gerada em um editor de textos qualquer, que tenha suporte para salvar os dados sobre o formato somente texto e salvo no disco do computador.

2. O programa dever ser compilado, para que o compilador gere os bytecodes, armazenando os mesmos em disco e, tal solicitao dever ser realizada atravs do comando JAVAC, a ser utilizado no Prompt de comando:

3. Entra em cena o que chamamos de carregador de classe, que ir alocar os bytecodes gerados na memria do equipamento; 4. Agora ser executado o verificador de bytecode, que ter a funo de verificar se todos os bytecodes so vlidos e que os mesmos no violam as restries de segurana do Java; 5. Entra em cena o Interpretador Java, que ir ler os bytecodes e traduzi-los para uma linguagem que possa ser interpretada pelo equipamento (leia computador). Logo podemos afirmar que so necessrias as fases seguintes para que o programa em Java possa ser executado:

Vale lembrar que na primeira etapa citada acima, o programa Java alm de ser gerado em um editor de textos compatvel com o modo Somente texto, dever ser salvo com a extenso Java (nome_arquivo.java). Existem tambm os ambientes de desenvolvimento integrado, que podem facilitar a vida de programadores mais experientes, porm a principio vamos gerar nossos cdigos em um editor de textos simples. Dentre os ambientes integrados de desenvolvimento, podemos destacar: Jbuilder da Borland; Visual J++ da Microsoft.

Para executar o aplicativo Java (fase 5) atravs do Interpretador, utilizamos o comando JAVA, a ser seguido do nome do aplicativo e dever ser digitado no Prompt de comando:

Quando falamos de Java e do carregador de classes, estamos na verdade nos referindo a dois tipos de programas para onde so carregados os arquivos .class: Aplicativos: podemos comparar um programa aplicativo a um programa de agenda eletrnica ou a uma planilha eletrnica, e este tem por caracterstica o fato de ser carregado e executado no prprio computador do usurio; Applet: programas de pequeno porte, que na maioria das vezes estaro localizados em um computador remoto e que sero acessados pelos usurios atravs de um programa especfico, o navegador Web. Neste momento os applets sero carregados no navegador atravs de sua comunicao com o computador remoto, executado no prprio navegador e descartado ao final da execuo.

Sabendo destes detalhes, vamos ao nosso primeiro programa em Java. O programa ter um objetivo simples, o de enviar (imprimir) uma linha de texto no monitor de seu computador. Siga os passos abaixo: 1. Abra o seu editor de textos Bloco de Notas do Windows; 2. Digite na rea de trabalho, a seguinte sequncia de comandos:

Antes de compilar e executar o programa vamos explicar os cdigos digitados um a um, para que voc conhea a estrutura bsica de um programa em Java. Primeira linha: public class Aula1 { Um programa Java, por mais simples que seja, dever possuir pelo menos uma definio de classe (a ser informada pelo desenvolvedor). Observe que publicamos a definio de uma classe (class) e esta tem o nome de Aula1. Observe que iniciamos o nome da classe com uma letra maiscula e, o Java diferencia letras maisculas e minsculas e, no obedecer tal regra, com certeza ir gerar um erro de sintaxe adiante. O fato de iniciarmos o nome da classe com um caracter maisculo no se deu por acaso. Por conveno utilizamos esta regra: utilizar a primeira letra do nome de uma classe como maiscula. A palavra chave Public no padro, ou seja, poderemos utilizar outras para definir classes, porm como estamos iniciando no Java, iremos a principio, utilizar apenas esta. Segunda linha: public static void main(String args[])

Aqui temos outra regra: um aplicativo Java comea automaticamente executando em main. Observe que este seguido por parnteses, indicando que ele um bloco de construo de programa, tambm conhecido por mtodo. Poderemos ter um ou mais mtodos, porm sempre teremos que ter o mtodo conhecido por main (para aplicativos Java). Se este mtodo for ignorado, o interpretador Java no ter condies de executar este aplicativo. Observe que antecedendo o main, temos a palavra-chave void, que neste caso indica que o mtodo ir executar uma tarefa, porm no retornar nenhuma informao a outro objeto, quando a execuo estiver finalizada. Terceira linha: {
Aqui temos o inicio do corpo da estrutura de comandos do mtodo. Assim como marcamos o inicio do corpo da estrutura de comandos do mtodo, deveremos ter posteriormente o marcador de fim do corpo da estrutura }

Quarta linha: System.out.println("Projeto Aprenda em Casa");


Aqui estamos solicitando para que o sistema efetue a impresso do contedo da String (Projeto Aprenda em Casa) na janela de comando (out.println). A linha completa acima conhecida por instruo.

Quinta linha: } Aqui temos o final do corpo da estrutura de comandos do mtodo. Sexta linha: }
Assim com tivemos o marcador de inicio e fim do corpo da estrutura de comandos do mtodo, temos aqui o final do contedo da classe Aula1.

Voc dever salvar o arquivo com a extenso JAVA e o mesmo dever possuir o mesmo nome dado a classe, ou seja, Aula1.java, caso contrrio no ser possvel a compilao de nosso programa. Em seguida, abra o prompt de comando e compile nosso programa:

Quando no existem erros na fonte a ser compilada, ser gerado um arquivo com a extenso class, que ter justamente os bytecodes do java de nosso aplicativo e, em seguida, poderemos executar nosso aplicativo, atravs do comando:

Mdulo de apostila : Java Nmero : 002 Nmero de pginas :


expressamente proba a reproduo total ou parcial do contedo desta apostila sem a prvia autorizao da High Tec Informtica, estando o infrator sujeito as penalidades previstas em Lei. Este mdulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefcio dos proprietrios das marcas, sem nenhuma inteno de atingir seus direitos.

A High Tec Informtica no comercializa a nenhum ttulo softwares, sendo que os mesmos devero ser adquiridos pelos alunos atravs dos distribuidores credenciados.

No mdulo de aula anterior geramos nosso primeiro programa em Java, que tinha um objetivo simples, o de enviar uma linha de texto para a tela do computador. Para isso, utilizamos o comando System.Out.PrintLn... Uma variante deste comando seria o System.Out.Print que, tem o mesmo objetivo, porm no executa quebra de linha. Vamos criar nosso segundo exemplo em Java e ao mesmo tempo explicar a diferena entre estes dois comandos. Siga os passos abaixo: 1. Abra o seu editor de textos Blocos de Notas; 2. Digite a sequncia de comandos abaixo:

3. Salve o arquivo como exemplo2.java:

4. Abra o prompt de comando e acione a pasta onde o arquivo exemplo2.java foi salvo:

5. No prompt de comando, digite o comando javac + o nome do arquivo a ser compilado:

6. Ainda no prompt de comando, execute o programa exemplo2, que acabamos de compilar e no apresentou erros, atravs do comando java exemplo2. Como resultado, voc ter impresso na primeira linha o contedo Projeto Aprendaemcasa e, em linhas separadas, teremos o contedo www.aprendaemcasa.com.br e em outra o contedo aprendaemcasa@aprendaemcasa.com.br. A diferena entre os mtodos print e println do comando System.out est no fato de que o primeiro no executa uma quebra de linha aps a sua execuo, procedimento este que ocorre no segundo mtodo. Temos tambm uma outra forma de executar uma quebra de linha, sem que um novo comando System.out seja necessrio. Observe o exemplo abaixo:

No Script acima estamos utilizando o que chamamos de caracteres especiais, que possuem funes especficas para os mtodos print e println. Observe que no exemplo acima, os caracteres especiais so: /n O primeiro caracter, a barra invertida (\) chamado de caracter de escape e obrigatrio o seu uso, seguido de um uma sequncia de escape (neste caso o caracter n) para que uma determinada ao seja executada.

Veja na tabela abaixo, os caracteres especiais possveis para o mtodo Print e PrintLn: Sequncia escape Objetivo \n Indica a quebra de linha, ou seja, o cursor da tela ser posicionado no inicio da prxima linha livre. \t Faz com que o cursor seja movido para a prxima parada de tabulao. \r Realiza o que chamamos de retorno de carro, ao seja, o cursor volta para o inicio da linha atual (sem que ocorra a quebra). \\ Possibilita a impresso do smbolo de barra invertida, caso seja necessrio \ Possibilita a impresso do caracter aspas duplas. Assim como em outras linguagens de programao, na Java tambm utilizamos as variveis e, o trabalho com as mesmas est diretamente ligado com alguns conceitos de memria. Quando iniciamos uma varivel, na verdade estamos criando uma posio na memria do computador e, cada varivel passa a ter: o o o o o Um nome; Um tipo de dado que ir armazenar; Um tamanho; Um valor; Uma posio na memria.

Ao determinar um valor a uma varivel, este passar a fazer parte da referida posio de memria e, caso j exista um valor anterior armazenado, o mesmo ir substitui-lo, em outras palavras, o valor anterior ser destrudo. Ao ler o valor de uma varivel (posio de memria), o processo apenas de consulta e, ao contrrio do que citamos anteriormente, o valor no destrudo. Veja abaixo exemplos de declaraes de variveis no Java: ... ... String primeironome, sobrenome; Int numero1, numero2, soma; ... ... soma = numero1 + numero2; ... ... Observe que na primeira linha estamos declarando duas variveis do tipo String, que so:

o primeironome; o sobrenome. Em seguida estamos declarando trs variveis do tipo numricas, que so: o numero1; o numero2; o soma. Quando declaradas, as variveis j ocupam uma posio de memria, que passar a ser referenciada pelo nome atribudo a mesma. A principio estas tero apenas um nome de referncia e um tipo de dado. Durante a execuo do Script que o valor que a mesma ir armazenar lhe ser atribudo, como por exemplo, na linha em que lanado varivel SOMA o contedo (processo de leitura) da varivel NUMERO1 somado (operao aritmtica) ao contedo (processo de leitura) da varivel NUMERO2. Assim como as variveis, as operaes aritmticas so comuns em qualquer linguagem de programao, e no poderia ser diferente no Java. Na tabela abaixo voc tem a listagem dos principais operadores aritmticos a serem empregados em seus programas Java: Operador Java + * / % Funo adio subtrao multiplicao diviso mdulo Exemplo de expresso no Java Numero1 + 10; Numero1 10; Numero1 * 10; Numero1 / 10; Numero1 % Numero2;

Assim como em outras linguagens em programao, no Java as expresses aritmticas devero ser escritas sobre a forma de linha reta e, os parnteses so empregados no Java utilizando-se da mesma lgica empregada nas expresses algbricas. Como por exemplo: Queremos dividir por C, o resultado da soma de A com B, assim sendo, escreveramos o seguinte cdigo: C/(A+B); As seguintes regras so seguidas no que se diz respeito a precedncia de operadores: 1. Os operadores contidos nas expresses relativas aos pares de parnteses sero executados primeiro; 2. Com base na regra 1, os parnteses devem ser empregados para forar a ordem de avaliao das expresses, segundo a necessidade do desenvolvedor;

3. No caso de parnteses aninhados, os operadores constantes no par mais interno de parnteses sero aplicados primeiramente; 4. A seguinte tabela contm a ordem de execuo das operaes: Operador () Funo parnteses Precedncia Avaliados primeiro e, em caso de aninhamento de pares de parnteses, a expresso do par mais interno ser processada primeiro. Dentro de cada par de parnteses, as expresses sero avaliadas da esquerda para a direita. Avaliados aps a ordem dos pares dos parnteses e, em caso de incidncia destas operaes, sero avaliados da esquerda para a direita. Avaliados por ltimo e, em caso de incidncia destas operaes, sero avaliados da esquerda para a direita.

* / % + -

Multiplicao, diviso e mdulo Soma e subtrao

aconselhado o uso de pares de parnteses em expresses aritmticas, mesmo que a construo da mesma seja simples e no os exija, pois tal prtica torna as expresses aritmticas mais fceis de serem lidas e o cdigo se torna mais fcil de ser interpretado. Usando classes pr-definidas Os primeiros exemplos que desenvolvemos no nosso curso utilizaram a sada padro do prompt de comando, porm a grande maioria dos sistemas visa utilizar a interface grfica e amigvel que caracterizou o ambiente Windows. Um dos recursos mais simples neste sentido so as janelas (caixas) de dilogo para exibir a sada de dados (mensagens ao usurio). O Java2 inclui uma classe conhecida por JOptionPane, que tem por finalidade proporcionar ao desenvolvedor o uso de caixas de dilogo para que se possa exibir informaes que se julgue importante. Veja no exemplo abaixo o uso de uma caixa de dilogo para exibir uma simples mensagem ao usurio:

** listagem exibida na janela acima: import javax.swing.JOptionPane; public class exemplo4 { public static void main ( String args[] ) { JOptionPane.ShowMessageDialog ( null,"Projeto\nAprenda\nem\nCasa"); system.exit( 0 ); } } O Java2 tem como caracterstica um rico conjunto de classes predefinidas e, o desenvolvedor poder utilizar as mesmas ao invs de ter que gerar (criar) todo o cdigo necessrio para alcanar seus objetivos. Digite o cdigo acima, salve o arquivo como exemplo4.java", compile e execute o programa. Uma das facilidades do Java est relacionada com o aproveitamento das classes j disponveis na linguagem, facilitando assim a vida do desenvolvedor que, ao invs de ter de fabricar o pneu do carro, dever apenas encaix-lo na roda para que em seguida possa sair rodando com o mesmo. O programa acima um tpico exemplo deste recurso. Vamos explicar linha a linha os passos executados (exceto as linhas de comandos que j conhecemos). import javax.swing.JOptionPane; A linha acima na verdade uma instruo Import. Este comando na verdade tem duas funes: 1. Identificar a classe requerida; 2. Carregar a classe requerida para posterior compilao. Na verdade estaremos utilizando uma janela de avisos (grfica), que obtida atravs da classe JoptionPane e, esta classe est contida em um pacote de classes chamado de javax.swing. O nome do pacote representado fisicamente por uma pasta no disco. Os pacotes da Java API so normalmente armazenados no diretrio JAVAX, que por sua vez dividido em diversos outros diretrios, entre eles o swing. JOptionPane.ShowMessageDialog ( null,"Projeto\nAprenda\nem\nCasa");
A linha acima informa ao compilador que carregue a classe JoptionPane, que faz parte do pacote carregado na linha estudada acima. O pacote em questo contm classes conhecidas por GRAPHICAL USER INTERFACES GUIS.

Se voc programa em Delphi, provavelmente ir relacionar o comando acima ao famoso:

Application.Messagebox .... Aqui teremos uma janela de aviso padro, onde o ttulo desta no ser exibido (pois inserimos no local de referncia do ttulo o parmetro NULL e, a mensagem da janela de dilogo ser a frase PROJETO APRENDA EM CASA, apresentada com quebra de linhas. system.exit( 0 ); Em seguida foramos o trmino da execuo do programa atravs do comando EXIT, da classe system. Importante: Ao utilizar uma interface grfica, ser necessrio o uso do comando acima pra forar o trmino do aplicativo. A classe empregada no comando acima a SYSTEM, que faz parte do pacote JAVA.LANG. Mas voc deve estar perguntando: Porque no importamos o pacote de classes JAVA.LANG, assim como fizemos com o pacote JAVAX.SWING? A resposta simples: alguns pacotes de classes so carregados automaticamente pelo Java, entre eles o JAVA.LANG; O principal objetivo das ltimas pginas deste mdulo de aula foi de apresentar ao aluno o que so pacote de classes, como carreg-los e encerr-los. Tais conhecimentos sero fundamentais no decorrer do curso. Vamos imaginar um exemplo simples, onde o usurio ir entrar com dois nmeros e o sistema ir apresentar a soma destes dois nmeros. Veja a fonte abaixo: import javax.swing.JOptionpane; public class Soma { public static void main ( String args[] ) { String numero1, numero2; int num1, num2, total; numero1 = JOptionpane.showInputDialog(Digite um numero:); numero2 = JOptionpane.showInputDialog(Digite um segundo numero:); num1 = Integer.parseInt (numero1); num2 = Integer.parseInt (numero2); total = num1 + num2; JOptionpane.ShowMessageDialog(null,A soma dos numeros e + total, Resultado total,JOptionPane.PLAIN_MESSAGE); System.exit(0); } }

Na fonte acima apresentamos uma srie de novidades. A primeira delas est na declarao de variveis em programas Java. A sintaxe para este procedimento a seguinte: Tipo_varivel lista_variveis_separadas_por_virgula; Na primeira linha criamos duas variveis (numero1 e numero2) do tipo String e, na segunda linha criamos trs outras variveis (num1, num2 e total). Para que uma varivel seja utilizada no decorrer de um programa Java, ao contrrio de outras linguagens de programao, dever ser declarada antes do seu uso/emprego. Em seguida uma outra novidade, o uso de janelas grficas para a entrada de dados, conforme mostra a linha abaixo: numero1 = JOptionpane.showInputDialog(Digite um nmero:); Nesta sintaxe, ser exibida uma caixa de dilogo padro com uma caixa de edio, para que voc possa inserir dados via teclado. Existir uma frase antes ou acima da caixa de edio, que justamente a String apresentada pelo desenvolvedor. Esta String orienta o usurio no tipo de informao que dever ser fornecida. O contedo digitado pelo usurio ser armazenado na varivel numero1 (neste caso). O mesmo ocorre na linha seguinte, sendo que o contedo ser armazenado na varivel numero2. Observe que as variveis numero1 e numero2 so do tipo String, ou seja, no podem sofrer nenhuma espcie de processamento aritmtico. Mas como fazer se necessitamos somar o valor das duas entradas? Aqui temos uma outra novidade, o uso de funes. Observe as linhas abaixo: num1 = Integer.parseInt (numero1); num2 = Integer.parseInt (numero2); Aqui estamos na verdade jogando para a varivel num1 e num2 o contedo das variveis numero1 e numero2 respectivamente, transformados de string para nmeros inteiros. Em seguida estamos armazenando na varivel total a soma das duas variveis (num1 e num2) total = num1 + num2; Posteriormente estamos exibindo em uma caixa de dilogo o resultado desta soma:
JOptionpane.ShowMessageDialog(null,A total,JOptionPane.PLAIN_MESSAGE); soma dos numeros e + total, Resultado

Vimos at este ponto alguns modelos de caixa de dilogo padro do Java. Veja na tabela abaixo os tipos existentes: Tipo de janela JOptionPane.ERROR_MESSAGE JOptionPane.INFORMATION_MESSAGE JOptionPane.WARNING_MESSAGE JOptionPane.QUESTION_MESSAGE JOptionPane.PLAIN_MESSAGE objetivo Tem o objetivo de exibir uma janela de dilogo com uma mensagem de erro ao usurio Tem o objetivo de exibir uma janela de dilogo do tipo mensagem de informao ao usurio Tem o objetivo de exibir uma janela de dilogo do tipo mensagem de advertncia ao usurio Tem o objetivo de exibir uma janela de dilogo do tipo interrogao (pergunta) Exibe uma janela de dilogo simples, contendo apenas uma mensagem. Esta a nica janela de dilogo que no possui um cone prprio de representao

Veja os exemplos a seguir: 1) No primeiro exemplo (fonte a seguir), estamos utilizando uma janela de dilogo do tipo INFORMATION_MESSAGE: import javax.swing.JOptionPane; public class Grafico1 { public static void main ( String args[] ) { JOptionPane.showMessageDialog (null, "Curso Java", "Projeto Aprenda em Casa", JOptionPane.INFORMATION_MESSAGE); System.exit(0); } } Ao compilar o exemplo acima, teremos como resultado a seguinte janela de dilogo:

Vamos a algumas consideraes: a) Ao utilizar o parmetro INFORMATION_MESSAGE, automaticamente ser adicionado o cone representado pela letra (I), conforme podemos observar no grfico; b) A segunda String da linha de comando do JOptionPane representa a frase que ser apresentada no interior da janela de dilogo; c) A terceira String da linha de comando do JOptionPane representa a frase que ser apresentada como linha de ttulo da janela de dilogo. 2) Veja agora um exemplo com uma caixa de dilogo do tipo WARNING_MESSAGE:

import javax.swing.JOptionPane; public class Grafico1 { public static void main ( String args[] ) { JOptionPane.showMessageDialog (null, "Area Exclusiva para Socios", "Projeto Aprenda em Casa", JOptionPane.WARNING_MESSAGE); System.exit(0); } }

Vamos a algumas consideraes: a) Observe que neste tipo de janela de dilogo, o cone representado por um sinal de exclamao (advertncia). b) Os demais parmetros so os mesmos. 3) Vamos agora a um exemplo do tipo QUESTION_MESSAGE: import javax.swing.JOptionPane; public class Grafico1 { public static void main ( String args[] ) { JOptionPane.showMessageDialog (null, "Confirma Exclusao Registro?", "Projeto Aprenda em Casa", JOptionPane.QUESTION_MESSAGE); System.exit(0); } } Veja o resultado do cdigo executado:

Observe que nos demais modelos, o que realmente altera o cone que representa o tipo de caixa de dilogo. Vamos a um exemplo prtico com o ERROR_MESSAGE: import javax.swing.JOptionPane; public class Grafico1 { public static void main ( String args[] ) {

JOptionPane.showMessageDialog (null, "Voce nao esta autorizado a acessar esta area do site", "Projeto Aprenda em Casa", JOptionPane.ERROR_MESSAGE); System.exit(0); } } Veja abaixo o resultado do cdigo executado:

Mdulo de apostila : Java Nmero : 003 Nmero de pginas :


expressamente proba a reproduo total ou parcial do contedo desta apostila sem a prvia autorizao da High Tec Informtica, estando o infrator sujeito as penalidades previstas em Lei. Este mdulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefcio dos proprietrios das marcas, sem nenhuma inteno de atingir seus direitos.

A High Tec Informtica no comercializa a nenhum ttulo softwares, sendo que os mesmos devero ser adquiridos pelos alunos atravs dos distribuidores credenciados.

No mdulo de aula anterior. Voc saberia definir o que uma varivel? E constantes, voc saberia definir o que uma constante? No mundo da programao de computadores, independente da linguagem a ser utilizada, sempre iremos nos deparar com constantes e variveis.

Constantes
Como o prprio nome diz, constante uma rea de memria, que recebe um nome de identificao e que aps declarada, no ter o seu valor alterado. O exemplo tpico de uma constante seria utilizado para definir o ndice de desconto mximo de um determinado produto.

Como regra as constantes devem ser declaradas e inicializadas no mesmo momento. Veja um simples exemplo de declarao/inicializao de constantes abaixo: class Exemplo1 { public static void main (String args[]) { final int ndias = 365; System.out.println ("Uma pessa de 15 anos ja viveu "+(15*ndias)+" dias"); } }
Ao executar o arquivo acima, teremos como resultado:

Observe os passos que foram seguidos para declarar uma constante: Primeiro utilizamos a palavra chave FINAL (indicando que estamos declarando uma constante), em seguida o tipo de dado da constante (nmero inteiro), aps o nome da constante (ndias) e por fim o valor desta constante. Sempre que o sistema encontrar NDIAS durante a interpretao do cdigo ir ter como resultado o valor 365. Observe que citamos o tipo, ou seja, o tipo de dados que a constante ir representar/armazenar. No Java temos os seguintes tipos primitivos de dados: Tipo char String boolean float Espao ocupado 2 bytes varivel 1 byte 4 bytes Valores possveis Armazena apenas um caracter, podendo este ser um caracter de controle. Armazena Strings de caracter True ou False 3,4E-38 a 3,4E+38

double byte short int long

8 bytes 1 byte 2 bytes 4 bytes 8 bytes

1,7E-308 a 1,7E+308 -128 a 127 -32.768 a 32767 -2.147.483.648 a 2.147.383.647 -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807

Lembrando que os tipos das variveis devem ser escritos em letras minsculas. Observe agora o exemplo abaixo: class Exemplo1 { public static void main (String args[]) { final float ndias = 365; System.out.println ("Uma pessa de 15 anos ja viveu "+(15*ndias)+" dias"); } }
Observe que alteramos a constante (ndias) do tipo INT para FLOAT e, ao executar o programa teremos o seguinte resultado:

Quando declaramos a constante como sendo um nmero do tipo ponto flutuante, ela assume automaticamente casas decimais. Sendo assim muito importante definir uma constante como sendo do tipo adequado ao processamento que ser realizado.Observe o outro exemplo abaixo: class Exemplo1 { public static void main (String args[]) { final byte ndias = 365; System.out.println ("Uma pessa de 15 anos ja viveu "+(15*ndias)+" dias"); } }
Ao compilar o arquivo acima, teremos o seguinte erro:

C:\Arquivos de programas\Xinox Software\JCreator LE\MyProjects\Exemplo1.java:3: Incompatible type for declaration. Explicit cast needed to convert int to byte. final byte ndias = 365; ^

1 error O erro se d pelo motivo de que uma constante do tipo byte armazena valores na faixa de 128 a 127 e, o valor atribudo supera estes limites. Variveis
Uma varivel ao contrrio de uma constante, poder armazenar diversos valores durante a execuo de um programa, ou seja, um espao reservado na memria do computador para armazenar um determinado tipo de dados.

No Java a declarao de uma varivel poder ocorrer em qualquer ponto do programa, desde que antes de sua utilizao. Uma varivel pode ser declarada sem receber um valor inicial ou recebendo um valor inicial, de acordo com a necessidade do operador. As variveis podem assumir o mesmo tipo de dados citados acima quando estudamos as constantes. Para formar o nome de uma varivel deveremos observar as regras abaixo: a. Iniciar por uma letra do alfabeto; b. Os demais caracteres podem ser letras, nmeros ou sublinhado. Estas regras tambm valem para os nomes de constantes. Ao declarar uma varivel voc dever definir o tipo de dados, o nome da varivel e se for o caso, o valor inicial da mesma. Observe o exemplo abaixo: class Exemplo1 { public static void main (String args[]) { int ndias = 365; System.out.println ("Uma pessa de 15 anos ja viveu "+(15*ndias)+" dias"); } }
Na verdade temos o mesmo exemplo utilizado para ilustrar as constantes, porm com o uso de variveis.

Se voc j conhece outra linguagem de programao, com certeza sabe o que um vetor ou uma array. Este termo utilizado para especificar um grupo de posies continuas e ordenadas na memria do micro (entenda por variveis com divises), que possuem o mesmo nome e o mesmo tipo e, cada um dos elementos identificado por um nmero.

Imagine uma casa, onde teoricamente pode residir uma famlia. Agora imagine um bloco (prdio residencial), aqui poderemos ter vrias famlias residindo, sendo que cada uma ocupa uma determinada posio (apartamento), identificada por um determinado nmero (nmero do apartamento). Temos aqui um mesmo tipo de construo (mesmo nome de varivel), com um mesmo objetivo, o de alocar famlias (mesmo tipo de dado), sendo que para cada famlia (cada valor a ser armazenado), teremos um espao fsico prprio (espao de memria) e este espao, ser identificado por um nmero do apartamento (nmero de identificao do array/vetor). Ficou mais claro? Temos dois tipos de arrays: Unidimensional -> aquele que possui um nico ndice de identificao. Neste caso chamado de vetor; Matriz -> aqueles que possuem mais de uma dimenso.

Veja abaixo exemplos de vetores: Nome [0] Nome [1] Nome [2] Observe que temos uma mesma varivel (NOME), porm como a mesma foi dividida, ela passou a ser um vetor, porque possui uma nica dimenso de diviso. Veja abaixo exemplos de matrizes: Valorvenda [0] [0] Valorvenda [0] [1] Valorvenda [0] [2] Valorvenda [1] [0] Valorvenda [1] [1] .... .... Observe que dividimos a parte 0 do vetor Valorvenda em trs outras partes, o mesmo ocorrendo para a parte 1, ou seja, temos aqui mais de uma dimenso (diviso). importante lembrar que, em termos prticos, o primeiro elemento de um vetor ou matriz o zero ( 0 ). Para que voc utilize um array em seu sistema, dever obedecer trs etapas:

1. Declarao; 2. Inicializao; 3. Instanciar. Veja alguns exemplos abaixo de declarao de um array:

String nome[]; Float valorvenda [] [];


Veja abaixo alguns exemplos para instanciar um array:

String nome = new String[10]; Float valorvenda [3] [3];


Para lanar um valor a um array, basta proceder como nas variveis, porm voc dever citar o nmero do ndice que ir recebe-lo.

Veja o exemplo abaixo, onde declaramos e em seguida instanciamos uma array: public class Programa4 { public static void main (String args[]) { String nome[] = new String[3]; nome[0] = "Paulo"; nome[1] = "Henrique"; nome[2] = "Matuszewski"; System.out.println ("Seu sobre nome e " + nome[2]); } } Observe o resultado em tempo de execuo:

Vamos agora gerar um erro proposital, como por exemplo, tentar utilizar um ndice fora dos limites estipulados na declarao. Observe o erro que ser gerado:

Observe que o erro gerado em tempo de execuo e no em tempo de compilao. Veja outro exemplo com o uso de vetores abaixo: public class Programa4 { public static void main (String args[]) { int numeros[] = new int[3]; int soma; numeros[0] = 32; numeros[1] = 10; numeros[2] = 54; soma = (numeros[0]+numeros[1]+numeros[2]); System.out.println("A soma dos numeros e :" + soma); } }
Observe o resultado na execuo deste programa:

Observe outra forma de escrever o mesmo cdigo acima: public class Programa4 { public static void main (String args[]) { int numeros[]; numeros = new int[3]; int soma; numeros[0] = 32; numeros[1] = 10; numeros[2] = 54; soma = (numeros[0]+numeros[1]+numeros[2]); System.out.println("A soma dos numeros e :" + soma); } } Voc notou a diferena? No primeiro exemplo da fonte em teste executamos o seguinte procedimento:

int numeros[] = new int[3]; Neste declaramos e instanciamos o vetor em uma mesma linha, o que no ocorre no exemplo abaixo:
int numeros[]; numeros = new int[3]; Assim como em outras linguagens de programao, no Java temos uma srie de funes matemticas. Como regra geral temos a seguinte sintaxe para o emprego das funes matemticas em Java:

Math.nome_funo(argumento) Antes de gerarmos qualquer exemplo, vamos a uma listagem das principais funes matemticas existentes no Java: Funo Math.abs Math.sqrt Math.round Math.floor Math.ceil Math.min(lista valores) Objetivo Retorna o valor absoluto de um nmero Retorna o valor da raiz quadrada de um nmero Retorna o nmero oferecido como parmetro, arredondado para o seu inteiro seguinte Arredonda o valor de um nmero para baixo Arredonda o valor de um nmero para cima Retorna o menor valor de um conjunto de nmeros

Math.max(lista valores) (int)(Math.random())

Retorna o maior valor de um conjunto de nmeros Retorna um valor aleatrio

Vamos gerar um exemplo abaixo onde iremos simular o sorteio dos nmeros de uma loteria qualquer, como por exemplo, a MegaSena: public class Programa6 { public static void main (String args[]) { int sorteado; int contador; for (contador = 1; contador <=6; contador++) { sorteado = (int)(Math.random()*60); System.out.println ("Numero"+contador+"Sorteado "+sorteado); } } }
Observe que a principio geramos um Loop, que ser executado 6 vezes e, em cada uma das vezes que o loop for executado, ser sorteado um nmero de 1 60, nmero este que ser armazenado na varivel sorteado. Em seguida, iremos enviar para a janela de Prompt do DOS a string na qual ser apontado o nmero sorteado, conforme podemos observar na figura abaixo:

Vamos a um outro exemplo: public class Programa6 { public static void main (String args[]) { System.out.println("Funcao abs de 10.7 igual a "+Math.abs(10.7)); System.out.println("Funcao abs de -10.7 igual a "+Math.abs(-10.7)); System.out.println("Funcao floor de 10.7 igual a "+Math.floor(10.7)); System.out.println("Funcao ceil de 10.7 igual a "+Math.ceil(10.7)); } }

Aqui teremos como resultado o que segue:

Mdulo de apostila : Java Nmero : 004 Nmero de pginas :


expressamente proba a reproduo total ou parcial do contedo desta apostila sem a prvia autorizao da High Tec Informtica, estando o infrator sujeito as penalidades previstas em Lei. Este mdulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefcio dos proprietrios das marcas, sem nenhuma inteno de atingir seus direitos.

A High Tec Informtica no comercializa a nenhum ttulo softwares, sendo que os mesmos devero ser adquiridos pelos alunos atravs dos distribuidores credenciados.

Vamos neste mdulo de aula estudar sobre as estruturas de controle do Java. A principio um programa de computador emprega o modo de execuo sequncial para ler/executar os comandos, ou seja, as linhas de comando so executadas uma a uma, atravs de ordem crescente pela qual foram escritas. Este mtodo pode ser alterado atravs do emprego das estruturas de controle, ou seja, o cdigo poder ter a sua execuo sequncial interrompida, at que uma determinada condio seja alcanada. Estes modos de execuo de um programa so chamados de estruturas de controle, que podem ser dos seguintes tipos bsicos: Estrutura sequencial; Estrutura de seleo; Estrutura de repetio.

A estrutura sequncial foi citada no inicio deste mdulo. J para a estrutura de seleo, o Java disponibiliza trs destas: 1. If 2. If/Else 3. Switch Para a estrutura de repetio, o Java disponibiliza trs destas: 1. While 2. Do ... While 3. For Os comandos acima so considerados pela linguagem como Palavras chave e, estas no podero ser empregadas para nomear uma varivel por exemplo. As palavras chave do Java podem ser observadas na listagem abaixo: abstract catch do final implements long private static throw void boolean char double finally import native protected super throws volatile break class else float instanceof new public switch transient while byte continue Extends For int null return synchronized true const case default false if interface package short this try goto

As estruturas de seleo so empregadas para determinar, atravs de uma condio especifica, se um trecho de cdigo ser ou no executado. Por exemplo, s ser concedido o crdito a consumidores que tiverem um salrio superior R$ 2.000,00. Neste caso, teremos algo (dentro do cdigo e em linguagem de programao) parecido com o que segue: Se salrio_consumidor for maior ou igual a 2000,00 ento conceda o crdito Final da condio. Este tipo de condio poder ser empregada na linguagem Java atravs do emprego do comando IF (se). A sintaxe desta estrutura pode ser observada abaixo: if (condio){ lista de comandos a serem executados em caso positivo } Veja um simples exemplo abaixo:
public class aula12 { public static void main (String args[]) { int salario; salario = 2300; if (salario >= 2000) { System.out.println("Este consumidor podera adquirir o produto atraves de financiamento"); } } }

Ao executarmos este pequeno programa teremos o seguinte resultado:

A linha de impresso s foi executada pois a comparao dentro da estrutura IF verdadeira, ou seja, a varivel salario possui um valor maior ou igual R$ 2.000,00. Vamos alterar o valor do teste, conforme podemos observar abaixo:

public class aula12 { public static void main (String args[]) { int salario; salario = 1999; if (salario >= 2000) { System.out.println("Este consumidor podera adquirir o produto atraves de financiamento"); } } }

Observe que a frase no foi impressa, pois o comando que realiza esta funo s ser executado caso a comparao seja verdadeira e, no exemplo acima o valor da varivel salario 1999 e o teste para ser verdadeiro dever ter o valor da varivel em questo igual ou superior a 2000. Poderemos empregar tambm a sintaxe deste comando atravs de uma estrutura aninhada, onde sero estadas mltiplas condies, onde sero impostas novas condies IFs para uma condio ELSE. Observe o exemplo abaixo:
import javax.swing.JOptionPane; public class Programa6 { public static void main (String args[]) { String idade; int vota; idade=JOptionPane.showInputDialog("Qual a sua idade?"); vota = Integer.parseInt( idade ); if (vota < 16) { JOptionPane.showMessageDialog(null,"Voc no poder votar nas prximas eleicoes","Atencao",JOptionPane.INFORMATION_MESSAGE); } else if (vota>15 && vota<18) { JOptionPane.showMessageDialog(null,"O seu voto nas proximas eleicoes e opcional","Atencao",JOptionPane.INFORMATION_MESSAGE); } else { JOptionPane.showMessageDialog(null,"O seu voto e obrigatorio nas proximas eleicoes","Atencao",JOptionPane.INFORMATION_MESSAGE); } } }

Observe que no exemplo acima temos na verdade um outro IF no caso do primeiro teste realizado ser falso, iremos testar outra condio (no uma negativa). Ou seja, empregando a tcnica acima voc estar oferecendo trs alternativas ao seu sistema: A primeira caso a idade entrada seja inferior a 16 anos; A segunda caso a idade entrada seja superior a 15 e inferior a 18; A terceira caso a idade entrada seja superior a 18.

Observe que utilizamos o operador lgico && (and), ou seja, para que se tenha como resultado uma resposta verdadeira, as duas expresses constantes da expresso lgica devem ser verdadeiras. Observe que no exemplo acima, tivemos um processo de mltipla escolha e, dependendo do nmero de opes a serem especificadas na estrutura IF pode tornar a escrita do comando invivel. Se voc necessitar escolher um entre diversos outros valores, sendo que para cada valor temos um cdigo especfico, poder empregar a estrutura SWITCH ... CASE. A sintaxe deste comando observada abaixo: switch (expresso) { case valor1: lista de comandos a serem executados; break; case valor2: lista de comandos a serem executados; break; case valor3: lista de comandos a serem executados; break; case valor4: lista de comandos a serem executados; break; } Observe o exemplo abaixo: import java.util.Date; public class Programa6 { public static void main (String args[]) { int dia; Date dt_atual = new Date(); dia = dt_atual.getMonth(); switch(dia) { case 0: System.out.println("estamos no mes de janeiro"); break; case 1: System.out.println("estamos no mes de fevereiro"); break; case 2: System.out.println("estamos no mes de marco"); break; case 3: System.out.println("estamos no mes de abril");

break; case 4: System.out.println("estamos no mes de maio"); break; case 5: System.out.println("estamos no mes de junho"); break; case 6: System.out.println("estamos no mes de julho"); break; case 7: System.out.println("estamos no mes de agosto"); break; case 8: System.out.println("estamos no mes de setembro"); break; case 9: System.out.println("estamos no mes de outubro"); break; case 10: System.out.println("estamos no mes de novembro"); break; case 11: System.out.println("estamos no mes de dezembro"); break; } } } Observe que no exemplo acima temos um total de 12 condies (valores diferentes) para uma mesma varivel e, o objetivo de apenas exibir a ms atual por extenso. Aqui temos algumas novidades, entre elas a importao do pacote java.util.Date, para que possamos extrair a data atual e a funo getMonth(), onde podemos extrair o ms da data atual. Se voc precisar extrair o dia da semana ao invs do nmero do ms, dever trocar a funo getMonth() pela funo getDay(). Observe que a numerao do ms, assim como a numerao do dia da semana, sempre comea do zero (0), assim sendo, o ms de agosto nesta funo representado pelo nmero 07. Vamos comear nossos estudos das estruturas de repetio: ESTRUTURA DE REPETIO WHILE Esta estrutura tem como lgica fundamental o execute enquanto uma determinada condio for verdadeira. Sua sintaxe pode ser observada abaixo: while (condio) { lista de comandos a serem executados enquanto condio do while for verdadeira }

Observe o exemplo abaixo: public class Programa5 { public static void main (String args[]) { int contador = 1; int soma = 0; while (contador<11) { soma=soma+contador; System.out.println("Valor : "+contador); contador=contador+1; } System.out.println("------------"); System.out.println("Soma dos valores = " + soma); } } O primeiro passo foi declarar duas variveis como numricas e inteiras (contador e soma), sendo que a primeira tem valor inicial igual a 1 e a segunda igual a 0. Em seguida criamos um lao (sequncia de comandos que ser executada um determinado nmero de vezes), sendo que a condio deste lao executar enquanto o valor de contador for menor que 11. O bloco que ser executado enquanto o contador for menor que 11 diz que, primeiro iremos acumular o valor de contador na varivel soma. Em seguida iremos enviar para o vdeo o valor da varivel contador antecedido da frase Valor : e em seguida iremos incrementar a varivel contador em uma unidade. De um em um, chegar um momento que a varivel contador no ser mais menor que 11 e, neste caso, o lao ser quebrado (abandonado) e a sequncia de execuo passa a valer a partir da prxima linha ao final do lao, ou seja, aquela na qual solicitamos que seja enviado para o vdeo uma srie de caracteres de subtrao (string) e em seguida o valor da varivel soma. Veja o resultado deste programa em tempo de execuo:

Agora vamos provocar um erro proposital em nosso sistema, retirando a linha que efetua o incremento (soma de uma unidade a mais) para a varivel contador. Teremos ento: public class Programa5 { public static void main (String args[]) { int contador = 1; int soma = 0; while (contador<11) { soma=soma+contador; System.out.println("Valor : "+contador); } System.out.println("------------"); System.out.println("Soma dos valores = " + soma); } } Observe o resultado em tempo de execuo:

Teremos aqui um loop eterno. Observe que a condio para a execuo do lao ... faa enquanto contador for menor que 11 ... A varivel contador iniciada com valor 1 (valor menor que 11) e, dentro do lao no temos nenhum incremento em seu valor, ou seja, ela sempre ter o valor 1, valor este que permite a execuo do lao. Para interromper a execuo do programa, basta pressionar as teclas <CTRL>+<C> simultneamente. Cuidado para no cometer este tipo de erro quando for construir um lao, ou seja, a de criar um lao eterno. Observe outra forma de escrever o incremento do valor da varivel contador: public class Programa5 { public static void main (String args[]) { int contador = 1; int soma = 0; while (contador<11) { soma=soma+contador; System.out.println("Valor : "+contador); contador++; } System.out.println("------------"); System.out.println("Soma dos valores = " + soma); } } Veja outra modificao no cdigo acima: public class Programa5 { public static void main (String args[]) { int contador = 1; int soma = 0; while (contador>11) { soma=soma+contador; System.out.println("Valor : "+contador); contador++; } System.out.println("------------"); System.out.println("Soma dos valores = " + soma); } }

Observe que no exemplo acima, o lao no foi executado nenhuma vez. Motivo: A varivel contador tem valor inicial igual a zero (0). A condio para a execuo do lao executar enquanto o valor da varivel contador for maior que onze (11). Isso ser impossvel, devido ao valor inicial da varivel ao entrar na condio do lao. Com o que foi exposto acima, podemos concluir que o lao da estrutura While poder nunca ser executado, dependendo das circunstncias, pois o teste executado antes do inicio da execuo da estrutura. ESTRUTURA DE REPETIO DO...WHILE Ao contrrio do WHILE, nesta estrutura o lao sempre ser executado pelo menos uma vez, pois o teste condicional para a execuo dos comandos que fazem parte do loop se d ao final da estrutura, conforme podemos observar a seguir: public class Programa5 { public static void main (String args[]) { int contador = 1; int soma = 0; do { soma=soma+contador; System.out.println("Valor : "+contador); contador=contador+1; } while (contador<11); System.out.println("------------"); System.out.println("Soma dos valores = " + soma); } }

Observe que o resultado final o mesmo, porm vamos alterar o Script para a condio abaixo: public class Programa5 { public static void main (String args[]) { int contador = 1; int soma = 0; do { soma=soma+contador; System.out.println("Valor : "+contador); contador=contador+1; } while (contador>11); System.out.println("------------"); System.out.println("Soma dos valores = " + soma); } } Veja o resultado na execuo:

Observe que pelo fato do teste condicional do lao ser executado ao final da estrutura em si, pelo menor uma vez a mesma ser executada e, foi o que ocorreu no caso. Portanto empregue esta estrutura quando quiser que o lao seja executado pelo menos uma vez, independente da condio geral imposta pelo sistema.

Mdulo de apostila : Java Nmero : 005 Nmero de pginas :


expressamente proba a reproduo total ou parcial do contedo desta apostila sem a prvia autorizao da High Tec Informtica, estando o infrator sujeito as penalidades previstas em Lei. Este mdulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefcio dos proprietrios das marcas, sem nenhuma inteno de atingir seus direitos.

A High Tec Informtica no comercializa a nenhum ttulo softwares, sendo que os mesmos devero ser adquiridos pelos alunos atravs dos distribuidores credenciados.

Neste mdulo vamos dar inicio ao estudo dos Appets Java. At o momento, os exemplos que desenvolvemos eram executados e tinham as suas sadas direcionadas ao Prompt de comando ou pela Interface grfica do Java, sendo que o Applet executado no APPLETVIWER ou tambm atravs de um navegador Web. O Java quando instalado, oferece uma srie de applets exemplos. Os exemplos normalmente so instalados no seguinte diretrio:

Cada um dos Java Applets de exemplo vem acompanhado de suas respectivas fontes e, a medida que o seu conhecimento da linguagem Java for ampliando, voc ter nestas fontes uma tima fonte de pesquisa:

Para executar um Applet, voc dever proceder da seguinte forma: 1) Abra o Prompt de comando; 2) Acesse a pasta que contm o Applet a ser executado; 3) Digite o seguinte comando: appletviewer nome_arquivo.html:

Este procedimento far com que o appletviewer carregue o arquivo HTML especificado na linha de comando citada. Observe este applet em execuo:

Agora que voc sabe o que um applet, iremos no prximo mdulo de aula estudar os passos necessrios para criar um applet.

Mdulo de apostila : Java Nmero : 006 Nmero de pginas :


expressamente proba a reproduo total ou parcial do contedo desta apostila sem a prvia autorizao da High Tec Informtica, estando o infrator sujeito as penalidades previstas em Lei. Este mdulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefcio dos proprietrios das marcas, sem nenhuma inteno de atingir seus direitos.

A High Tec Informtica no comercializa a nenhum ttulo softwares, sendo que os mesmos devero ser adquiridos pelos alunos atravs dos distribuidores credenciados.

Vamos gerar nosso primeiro Applet para conhecer os passos necessrios sua criao. Observe a fonte abaixo:

A principio (linhas 1 e 2) importamos as classes que sero necessrias para a execuo do Applet que acabamos de gerar. A classe importada de fundamental importncia neste exemplo a JApplet do pacote swing. Assim como nos exemplo anteriores, cada applet java a ser gerado composto de uma definio de classe no mnimo e, na linha 3 do exemplo acima, estamos iniciando uma nova classe, chamada de Exemploapplet. O parmetro extends JApplet informa classe que iremos herdar caractersticas semelhantes a esta classe (uma classe applet). Quando utilizamos esta sintaxe estamos na verdade utilizando dois tipos de classes: A super classe -> classe principal da estrutura (JApplet); A classe derivada -> que ir herdar caractersticas da classe principal.

Em outras palavras, podemos afirmar que a nova classe (Exemploapplet) que herda dados e mtodos da superclasse somados aos novos recursos que sero especificados abaixo. Mas herdar o que da classe principal (super classe)? Os navegadores que iro exibir o Applet necessitam de caractersticas especiais para que possam rodar o applet e, so essas caractersticas que sero herdadas. Seria muito trabalhoso voc programar todas as estas caractersticas, sendo muito mais simples apenas fazer herdar as mesmas na nova classe.

Entre a linha 5 e a linha 7 temos o corpo de definio da classe e das linhas 4 a 8 temos a definio de Paint, que na verdade um mtodo com o objetivo de desenhar imagens grficas na tela e, a palavra-chave void informa que este mtodo no ir retornar nenhum resultado ao completar a sua tarefa. Os parmetros do mtodo PAINT so informados entre parnteses na mesma linha (nmero 04). Os parmetros passados informam que o mtodo Paint ir requerer o objeto da classe Graphics que receber o nome de G. Este objeto utilizado para possibilitar o desenho de imagens grficas no Applet.

Observe tambm na mesma linha que utilizamos a palavra-chave public para que o appletviewer passa chamar o mtodo Paint. Agora teremos que gerar o arquivo HTML que ir carregar a classe Exemploapplet.class. A fonte do arquivo HTML que tem esta funo pode ser observada abaixo: <html> <applet code=Exemploapplet.class width=400 height=50> </applet> </html> Este arquivo dever ser salvo com o nome Exemploapplet.htm e, dever estar presente na mesma pasta onde o applet foi gerado. Aps este procedimento basta digitar o comando: appletviewer Exemploapplet.htm No prximo mdulo de aula iremos gerar outros applets de exemplo.

Mdulo de apostila : Java Nmero : 007 Nmero de pginas :


expressamente proba a reproduo total ou parcial do contedo desta apostila sem a prvia autorizao da High Tec Informtica, estando o infrator sujeito as penalidades previstas em Lei. Este mdulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefcio dos proprietrios das marcas, sem nenhuma inteno de atingir seus direitos.

A High Tec Informtica no comercializa a nenhum ttulo softwares, sendo que os mesmos devero ser adquiridos pelos alunos atravs dos distribuidores credenciados.

Antes de gerarmos novos exemplos de Java applets, vamos a algumas dicas sobre alguns erros comuns quando se comea a desenvolver em Java neste sentido: 1. Nunca esquea de finalizar a tag <APPLET> com </APPLET>. Quando trabalhamos apenas com o HTML puro, a pgina pode ser normalmente exibida se esquecermos de finalizar determinadas Tags, ou seja, algum contedo, mesmo que fora do esperado/planejado, dados sero exibidos no navegador. Ao esquecer da tag de encerramento </APPLET>, impossibilita que o Applet seja carregado no Appletviewer ou em seu navegador Web. 2. Caso ao executar o seu applet tenha recebido a seguinte mensagem de erro: MissingResourceException, esta mensagem pode estar vinculada a um dos erros de procedimento a seguir: a. Verifique a Tag <APPLET>, ela deve conter a mesma sintaxe apresentada no Script anterior, caso contrrio o erro ser gerado; b. Verifique se, por erro de digitao foram inclusos na tag <APPLET> caracteres especiais como pontos ou virgulas. 3. O appletviewer requer sempre um arquivo HTML, com a tag <APPLET> para carregar um applet. 4. O arquivo a ser executado pelo Appletviewer dever ser sempre um arquivo com a extenso HTML ou HTML. 5. Os arquivos resultantes de todos os procedimentos seguidos (CLASS, HTML, etc...) devero estar localizados em um mesmo diretrio. Consideramos importante tambm a ttulo de fonte de pesquisa e estudos, alguns sites que tratam sobre Java Applets. Entre vrios destacamos: www.java.sun.com/applets/index.html o Site da Sun contendo applets gratuitos para a imediata utilizao em sites da Web, applets de exemplo para a plataforma J2SDK. www.java.sun.com/jdc/ o Aqui voc encontrar listas de discusso, fruns, tutoriais, cursos on-line, etc...

Vamos gerar outro exemplo de Java Applet, onde iremos gerar linhas e strings em uma janela de dilogo. Observe o exemplo abaixo:

Na linha 01 estamos importando a classe JApplet; Na linha 02 estamos importante a classe Graphics; Nas linhas 03 e 04 estamos definindo as classes e, o mtodo paint tem seu inicio; Neste ambiente grfico, temos as coordenadas de x,y sabendo que: o Coordenada x representa a posio horizontal; o Coordenada y representa a posio vertical do objeto a ser desenhado. Na linha 6 estamos solicitando o desenho de uma linha reta, que v da coluna 10 linha 20 at a coluna 200 linha 20. (linha reta e horizontal); Na linha 7 estamos solicitando o desenho da String (Projeto Aprenda em Casa), na coluna 10 linha 30; Na linha 8 estamos solicitando o desenho de outra linha reta, que v da coluna 10 linha 40 at a coluna 200 linha 40.

Sugerimos a visita aos sites citados para melhor compreender o desenvolvimento de JavaApplets.

Mdulo de apostila : Java Nmero : 008 Nmero de pginas :


expressamente proba a reproduo total ou parcial do contedo desta apostila sem a prvia autorizao da High Tec Informtica, estando o infrator sujeito as penalidades previstas em Lei. Este mdulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefcio dos proprietrios das marcas, sem nenhuma inteno de atingir seus direitos.

A High Tec Informtica no comercializa a nenhum ttulo softwares, sendo que os mesmos devero ser adquiridos pelos alunos atravs dos distribuidores credenciados.

Antes de comearmos a estudar o desenvolvimento de aplicativos Java com acesso a banco de dados, deveremos conhecer um pouco sobre banco de dados, SQL, ODBC, etc... Sem um mnimo conhecimento a respeito destes assuntos, no teremos como prosseguir em nosso curso. Para armazenar os dados em um computador, normalmente so empregados os Softwares conhecidos por SGBDs (Sistemas Gerenciadores de Banco de Dados), ou seja, programas que administram os dados que devero ser armazenados eletronicamente. Temos em nosso site um curso completo de Access 2000 (sugerimos que o aluno baixe e estude o curso citado). Conforme podemos observar neste curso, o banco de dados formado por uma srie de objetos e, o objeto responsvel pelo armazenamento dos dados a tabela. Um banco de dados formado por uma ou mais tabelas (normalmente muitas tabelas). As tabelas so divididas em assuntos, ou seja, teremos uma tabela para cadastrar os clientes, outra para cadastrar as contas a pagar e receber, outra para cadastrar os fornecedores e assim sucessivamente. Cada tabela possui uma formao bsica constituda de linhas e colunas. As colunas so campos que identificam uma determinada informao que a tabela ir armazenar, como por exemplo o nome do cliente (campo NOME), o CPF do cliente (campo CPF), o nmero da carteira de identidade do cliente (campo RG), e assim sucessivamente. J as linhas (conhecidas em sistemas mais antigos por registros) so formadas por um conjunto de colunas (campos) devidamente preenchidos, ou seja, ao cadastrar um cliente (dar um nome, um CPF, um RG, etc...), estamos gerando uma linha na tabela (registro). Observe abaixo a cpia de uma tela do Access com o exemplo de uma tabela:

Acima temos uma tabela que possui 6 registros (linhas) e, cada linha formada pelo conjunto de campos CODIGO (que armazena um suposto cdigo de aluno) e ALUNO (que armazena o nome do aluno). Abaixo temos a figura da visualizao da estrutura da tabela:

As tabelas por sua vez possuem um nome que identificam a mesma e, neste caso temos a tabela ALUNO. Observe o nome da tabela na barra de ttulo da janela. Neste mdulo de aula no vamos detalhar a forma de criar tabelas no Access, maiores detalhes no curso disponvel em nosso site com o ttulo de Access 2000 ou Access XP. Aps criar o banco de dados, voc dever criar o que chamamos de front-ends, que so programas que, atravs de sua interface, permitem manipular as informaes das tabelas de um ou mais banco de dados (incluir novos dados, alterar dados cadastrados, etc...). No nosso curso iremos utilizar o Java e o SQL para gerar os Front-ends. Voc j ouviu falar em SQL? Provavelmente sim, porm aqui vamos apresentar alguns detalhes principais sobre o assunto. O SQL uma linguagem de consulta. Sua sigla significa Structured Query Language. Esta linguagem empregada para possibilitar a comunicao de um programa e o banco de dados manipulado pelo mesmo. Existem diversas formas de emprego dos comandos que compe a linguagem SQL, dentre elas destacamos: EMBUTIDA -> Quando o SQL invocado dentro de uma linguagem; RAD -> geradores de aplicaes, que nada mais so do que ferramentas que proporcionam gerar de forma automtica rotinas e/ou aplicaes, gerando automaticamente o cdigo para o programa e acesso aos dados.

Os comandos mais comuns do SQL so: SELECT -> para selecionar um conjunto de dados; CREATE TABLE -> para criar a estrutura das tabelas; INSERT -> para inserir dados em tabelas; UPDATE -> para atualizar os dados de uma tabela; DELETE -> para excluir os dados de uma tabela; DROP TABLE -> para excluir uma tabela.

Oferecemos um curso gratuito de SQL Server 7 em nosso site e, em determinados pontos so vistos comandos da linguagem SQL. Aconselhamos o estudo do mesmo, caso voc no tenha experincia com esta linguagem.

Para que possamos interagir o banco de dados e o seu programa (front-end), ser necessrio o emprego de um mecanismo que fornea esta tecnologia (imagine uma ponte que liga duas cidades, a cidade chamada de Programa e a cidade chamada de Banco de dados e, por esta ponte passaro os carros (dados) que iro movimentar o comrcio local das duas cidades (programa)). Para tal finalidade empregamos um Driver, ou seja programa que possibilita a comunicao entre um banco de dados e o seu programa. Existem diversos Drivers no mercado, cada um desenvolvido por um determinado fabricante. Um dos mais conhecidos mecanismos para tal fim o ODBC, em destaque na figura abaixo:

A sigla ODBC significa Open Database Connectivity e, um sistema com grande variedade de drivers para acesso a banco de dados. Aqui encontramos drivers (mecanismos que possibilitam a comunicao de programa banco de dados) do antigo dBase III Plus, aos mais modernos SGBDs, como o Oracle. Observe graficamente como o ODBC opera:

Alm do ODBC (o mais utilizado), para quem trabalha com o Java tem disponvel o JDBC (Java Database Connectivity), que a interface que proporciona o acesso a banco de dados relacionais atravs de aplicaes Java. Mas qual deverei usar, o ODBC ou o JDBC? O JDBC mais simples de ser configurado e, por ser nativo do prprio Java torna sua aplicao mais rpida (este tempo de processamento s ser notado em sistemas que tenham um grande volume de dados). No prximo mdulo de aula iremos estudar como configurar o Driver.

Mdulo de apostila : Java Nmero : 009 Nmero de pginas :


expressamente proba a reproduo total ou parcial do contedo desta apostila sem a prvia autorizao da High Tec Informtica, estando o infrator sujeito as penalidades previstas em Lei. Este mdulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefcio dos proprietrios das marcas, sem nenhuma inteno de atingir seus direitos.

A High Tec Informtica no comercializa a nenhum ttulo softwares, sendo que os mesmos devero ser adquiridos pelos alunos atravs dos distribuidores credenciados.

Neste mdulo de aula vamos aprender a configurar uma fonte de dados ODBC (mais utilizada atualmente no mercado). Para configurar esta fonte de dados, siga os passos abaixo: 1. 2. 3. 4. Clique na opo de menu <INICIAR>; V at a opo <CONFIGURAES>; D um clique na opo <PAINEL DE CONTROLE>; Na janela que se abre, d um clique duplo no cone <FERRAMENTAS ADMINISTRATIVAS>; 5. Na janela que se abre, d um clique duplo no cone FONTE DE DADOS ODBC. Neste ponto ser apresentada a seguinte janela:

6. Selecione a guia <USER DNS>; 7. Selecione o tipo de banco de dados que ser utilizado no sistema a ser desenvolvido (no nosso exemplo iremos trabalhar com o banco de dados MS Access); 8. Clique sobre o boto CONFIGURE, ser ento apresenta a seguinte janela:

9. Na janela acima voc dever configurar a sua fonte de dados, preenchendo os seguintes campos: Nome da fonte de dados -> digite o nome (apelido) que ser dado a sua fonte de dados e, este nome ser utilizado para concretizar a ligao entre seu aplicativo e o banco de dados aqui configurado. Neste exemplo vamos chamar a fonte de dados de APRENDAEMCASA; Descrio -> nesta caixa de edio voc poder descrever o objetivo da fonte de dados. O preenchimento deste campo no obrigatrio; Para selecionar o banco de dados Access (MDB) a ser utilizado pela fonte que recebeu o nome aprendaemcasa, clique no boto Selecionar. Ao clicar neste boto, ser apresentada a seguinte janela:

Nesta janela voc dever posicionar o sistema na pasta e selecionar o banco de dados que ser utilizado no sistema. Aps selecionar o mesmo, clique no boto OK. Observe como ficou a janela de configurao do sistema:

10. Clique no boto OK. Neste momento a sua fonte de dados est criada, conforme podemos observar no grfico abaixo:

11. Neste ponto voc pode fechar o administrador ODBC, sua fonte de dados est gerada.

Ocorre em alguns casos do Driver que voc deseja utilizar no estar listado (instalado) na guia USER DSN do administrador de ODBC. Se ocorrer esta situao em seu equipamento, proceda da seguinte forma:

1. Abaixo voc v a janela do USER DSN:

2. Clique no boto ADD, ser ento apresentada a seguinte janela:

3. Selecione o Driver a ser instalado e clique em <CONCLUIR>. De acordo com o banco de dados selecionado, ser aberta uma janela especfica e, no caso do banco de dados Access, ser aberta a janela representada pela figura 02 apresentada neste mdulo de aula, onde o aluno dever prosseguir normalmente com a configurao do sistema.

No prximo mdulo de aula iremos estudar os procedimentos para realizar a conexo com o banco de dados atravs do Java e um banco de dados Access que iremos criar.

Mdulo de apostila : Java Nmero : 010 Nmero de pginas :


expressamente proba a reproduo total ou parcial do contedo desta apostila sem a prvia autorizao da High Tec Informtica, estando o infrator sujeito as penalidades previstas em Lei. Este mdulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefcio dos proprietrios das marcas, sem nenhuma inteno de atingir seus direitos.

A High Tec Informtica no comercializa a nenhum ttulo softwares, sendo que os mesmos devero ser adquiridos pelos alunos atravs dos distribuidores credenciados.

Vamos ento gerar o nosso primeiro exemplo em Java com acesso a banco de dados. Para este exemplo, siga os passos abaixo: 1. Crie um banco de dados no Access com o nome de Agenda; 2. Crie uma tabela com o nome de PESSOAFISICA com a seguinte estrutura:

3. Crie uma fonte e dados ODBC que aponte para esta tabela, com o nome de Ag:

4. Para criar uma conexo com o banco de dados em sua aplicao Java, voc dever seguir a seguinte sequncia: 5. O primeiro passo importar a classe que possibilita a comunicao com um banco de dados. Este passo dever ser tomado antes da classe que ir trabalhar com o referido banco. Tal procedimento se d atravs da seguinte linha de comando: import java.sql.*; 6. Aps declarar a classe que ir manipular o banco de dados, deveremos preparar as variveis que iro representar os seguintes dados (do tipo String): a. String que representa o nome da fonte de dados, precedido da expresso jdbc:odbc:; b. String que representa o nome do usurio cadastrado para acessar o banco de dados. Se o banco de dados no possuir restrio de acesso, deveremos ter aqui uma String nula (vazia); c. String que representa a senha do usurio cadastrado para acessar o banco de dados. Se o banco de dados no possuir restrio de acesso, deveremos ter aqui uma String nula (vazia);

7. Em seguida deveremos montar a expresso que ir carregar o driver que representa o banco de dados a ser utilizado no programa. Esta linha tem a seguinte sintaxe: Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); 8. Aps este procedimento, deveremos criar uma varivel que ir representar a conexo e, esta varivel dever ser precedida da palavra reservada Connection, atravs do emprego da seguinte sintaxe: Connection varivel_conexao 9. Deveremos estabelecer ento a conexo com o uso da varivel que acabamos de criar no procedimento anterior e, as trs variveis citadas no item 6, atravs do emprego do seguinte comando/sintaxe: varivel_conexao = DriverManager.getConnection(var1, var2, var3) Sendo que VAR1 representa a varivel com o nome da fonte de dados, VAR2 que representa a String que contm o nome do usurio e VAR3 que representa a String que contm o nome do usurio. 10. Os demais procedimentos so aqueles que iro realizar a manipulao dos dados (incluso, alterao, excluso, etc...) 11. Aps todos os procedimentos necessrios, deveremos fechar a conexo, atravs do seguinte comando: varivel_conexao.close(); Vamos a um exemplo completo abaixo:

Observe que no exemplo acima empregamos um mtodo para a verificao de erros. O bloco que est entro da rea TRY tratado e, caso algum erro ocorra, o sistema ser automaticamente desviado para ao bloco catch(Exception e), onde informamos que a conexo no foi realizada com sucesso. Ao executar este pequeno exemplo, teremos o seguinte resultado:

Vamos propositadamente alterar o nome da fonte de dados para um nome inexistente e, em seguida compilar e executar o programa. Observe o resultado:

Aps compilado:

Agora que j sabemos gerar a conexo com uma base de dados, no prximo mdulo de aula iremos aprender a manipular informaes nas tabelas do banco de dados.

Mdulo de apostila : Java Nmero : 011 Nmero de pginas :


expressamente proba a reproduo total ou parcial do contedo desta apostila sem a prvia autorizao da High Tec Informtica, estando o infrator sujeito as penalidades previstas em Lei. Este mdulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefcio dos proprietrios das marcas, sem nenhuma inteno de atingir seus direitos.

A High Tec Informtica no comercializa a nenhum ttulo softwares, sendo que os mesmos devero ser adquiridos pelos alunos atravs dos distribuidores credenciados.

Vamos neste mdulo de aula aprender a trabalhar com comandos SQL para manipular os dados de um banco de dados atravs de um programa Java. J temos um banco de dados criado e uma tabela gerada. Vamos a principio gerar um exemplo que ir inserir linhas (registros) na respectiva tabela. Observe o cdigo abaixo:
import java.sql.*; class Incluidados { public static void main (String args[]) { try { String fonte = "jdbc.odbc.ag"; String usuario = ""; String senha = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection conecta; conecta = DriverManager.getConnection(fonte,usuario,senha); Statement cmd = conecta.createStatement(); cmd.executeUpdate("INSERT INTO pessoafisica (Nome, Email, Fone) VALUES ('Paulo Henrique Matuszewski','paulo@aprendaemcasa.com.br','39296154')"); System.out.println("Incluso concretizada na tabela do banco de dados"); cmd.close(); conecta.close(); } catch(Exception e) { System.out.println("Erro na inclusao de dados na tabela. Verifique sintaxe"); } } }

Ao executar o Script acima, teremos como resultado uma nova linha em nossa tabela do banco de dados Os passos seguidos para alcanar este objetivo foram: Importamos o pacote de classes que implementam o acesso a banco de dados em programas Java:
import java.sql.*;

Iniciamos a nossa classe, ou seja, a que representa o programa que estamos criando:
class Incluidados { public static void main (String args[]) {

Criamos as variveis que iro representar a conexo com o banco de dados, o nome do usurio e senha do mesmo:
String fonte = "jdbc.odbc.ag"; String usuario = ""; String senha = "";

em seguida, carregamos o driver que ser utilizado pela aplicao Java com o objetivo de concretizar a comunicao com o banco de dados:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Aps este passo estamos criando a varivel que representar efetivamente a nossa conexo:
Connection conecta;

Na linha abaixo estamos estabelecendo a conexo atravs do emprego das variveis criadas anteriormente e, pelo fato da linha estar dentro de um Try, caso ocorra algum erro ser apresentada a mensagem constante da clusula Exception:
conecta = DriverManager.getConnection(fonte,usuario,senha);

Em seguida estamos criando uma varivel que passa a ser compatvel com comandos que iro operar em banco de dados e suas tabelas e, a tabela passa a fazer parte do banco de dados representado pela varivel de conexo conecta:
Statement cmd = conecta.createStatement();

O prximo passo gerar o comando SQL a ser executado e executar este, atravs do mtodo executeUpdate:
cmd.executeUpdate("INSERT INTO pessoafisica (Nome, Email, Fone) VALUES ('Paulo Henrique Matuszewski','paulo@aprendaemcasa.com.br','39296154')");

Em seguida estamos apenas informando ao usurio que a incluso do registro na tabela pessoafisica foi realizado com sucesso e em seguida, liberando as variveis cmd e conecta que representam um comando e uma conexo com um determinado banco de dados:
System.out.println("Incluso concretizada na tabela do banco de dados"); cmd.close(); conecta.close();

Exerccio: empregando esta mesma sintaxe, desenvolva uma rotina que ir criar uma tabela no banco de dados, atravs do comando CREATE TABLE do SQL. Em caso de dvidas, consulte o curso completo de SQL Server 7, disponvel no link cursos gratuitos de nosso site.

Mdulo de apostila : Java Nmero : 012 Nmero de pginas :


expressamente proba a reproduo total ou parcial do contedo desta apostila sem a prvia autorizao da High Tec Informtica, estando o infrator sujeito as penalidades previstas em Lei. Este mdulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefcio dos proprietrios das marcas, sem nenhuma inteno de atingir seus direitos.

A High Tec Informtica no comercializa a nenhum ttulo softwares, sendo que os mesmos devero ser adquiridos pelos alunos atravs dos distribuidores credenciados.

Vamos neste mdulo de aula empregar uma consulta do tipo seleo (SELECT) do SQL. Vamos gerar um pequeno exemplo onde todas as linhas e colunas da tabela pessoafisica sero exibidos:
import java.sql.*; class Listadados { public static void main (String args[]) { try { String fonte = "jdbc:odbc:ag"; String usuario = ""; String senha = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection conexao; conexao = DriverManager.getConnection(fonte,usuario,senha); Statement conecta = conexao.createStatement(); ResultSet linhas = conecta.executeQuery("Select * FROM pessoafisica"); while (linhas.next()) { System.out.print(linhas.getString("nome") + " - "); System.out.print(linhas.getString("Email") + " - "); System.out.println(linhas.getString("Fone") + " - "); } System.out.println("Final da listagem"); conecta.close(); conexao.close(); } catch(Exception e) { System.out.println("Problemas na conexo, verifique procedimento"); } } }

Os procedimentos aqui adotados so similares aos dos mdulos anteriores, sendo que, aps criar a conexo, criamos uma varivel do tipo ResultSet (esta similar a um Recordset do VB ou um Dataset do C#), onde teremos nesta varivel uma representao na memria do equipamento das linhas retornadas pela execuo do comando SELECT que acompanha a sua sintaxe. Estes registros recuperados pelo comando SELECT sero armazenados na varivel LINHAS e, em seguida, criamos um Loop, sendo que o mesmo possui o comando NEXT(), ou seja, iremos ler a primeira linha e em seguida, montar os dados obtidos pela mesma (nome, e-mail e fone). Estes dados foram extrados do ResultSet pelo parmetro GetString somado ao nome do campo que queremos extrair a informao. Em seguida passaremos para a seguida linha (devido ao comando NEXT(), ou seja, prxima linha e, assim sucessivamente at lermos todos os registros da tabela.

Se voc quiser uma listagem ordenada por um determinado campo da tabela, poder alterar o seu Script conforme o que segue:
import java.sql.*; class Listadados { public static void main (String args[]) { try { String fonte = "jdbc:odbc:ag"; String usuario = ""; String senha = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection conexao; conexao = DriverManager.getConnection(fonte,usuario,senha); Statement conecta = conexao.createStatement(); ResultSet linhas = conecta.executeQuery("Select * FROM pessoafisica order by nome"); while (linhas.next()) { System.out.print(linhas.getString("nome") + " - "); System.out.print(linhas.getString("Email") + " - "); System.out.println(linhas.getString("Fone") + " - "); } System.out.println("Final da listagem"); conecta.close(); conexao.close();

} catch(Exception e) { System.out.println("Problemas na conexo, verifique procedimento"); }

Algumas observaes: Observe que estas linhas estaro disponveis na memria do equipamento para manipulao. Se voc no for trabalhar com todos os campos da tabela, interessante utilizar ao invs da sintaxe SELECT * FROM TABELA, a sintaxe SELECT <lista de campos separados por vrgula> FROM TABELA. Imagine que iremos trabalhar apenas com os campos NOME e EMAIL da tabela PESSOAFISICA, assim sendo, poderamos utilizar a seguinte estrutura:

import java.sql.*; class Listadados { public static void main (String args[]) { try { String fonte = "jdbc:odbc:ag"; String usuario = ""; String senha = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection conexao; conexao = DriverManager.getConnection(fonte,usuario,senha); Statement conecta = conexao.createStatement(); ResultSet linhas = conecta.executeQuery("Select nome, email FROM pessoafisica order by nome"); while (linhas.next()) { System.out.print(linhas.getString("nome") + " - "); System.out.print(linhas.getString("Email") + " - "); } System.out.println("Final da listagem"); conecta.close(); conexao.close(); } catch(Exception e) { System.out.println("Problemas na conexo, verifique procedimento"); } } }

Mdulo de apostila : Java Nmero : 013 Nmero de pginas :


expressamente proba a reproduo total ou parcial do contedo desta apostila sem a prvia autorizao da High Tec Informtica, estando o infrator sujeito as penalidades previstas em Lei. Este mdulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefcio dos proprietrios das marcas, sem nenhuma inteno de atingir seus direitos.

A High Tec Informtica no comercializa a nenhum ttulo softwares, sendo que os mesmos devero ser adquiridos pelos alunos atravs dos distribuidores credenciados.

comum no entanto, gerar consultas com seleo parcial de dados, de acordo com um filtro qualquer, que poder ser empregado juntamente com a clusula SELECT. Vamos imaginar que queremos selecionar apenas as linhas na qual temos os alunos que comecem o seu nome com Paulo, poderemos ento escrever o seguinte cdigo:
import java.sql.*; class Listadados { public static void main (String args[]) { try { String fonte = "jdbc:odbc:ag"; String usuario = ""; String senha = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection conexao; conexao = DriverManager.getConnection(fonte,usuario,senha); Statement conecta = conexao.createStatement(); ResultSet linhas = conecta.executeQuery("Select * FROM pessoafisica WHERE nome LIKE 'Paulo%'"); while (linhas.next()) { System.out.print(linhas.getString("nome") + " - "); System.out.print(linhas.getString("Email") + " - "); System.out.println(linhas.getString("Fone") + " - "); } System.out.println("Final da listagem"); conecta.close(); conexao.close(); } catch(Exception e) { System.out.println("Problemas na conexo, verifique procedimento"); } } }

Observe que a nica novidade aqui est na estrutura do comando SELECT do SQL, onde empregamos a clusula WHERE (utilizada para estabelecer filtros). O filtro ser aplicado pelo campo NOME que dever comear pelo contedo Paulo. Quando empregamos ao final da string de comparao o caracter %, estamos indicando que daquele ponto em diante, no importam os demais caracteres para o filtro aplicado. Se voc quisesse aplicar uma pesquisa que buscasse todos os alunos que tivessem o nome Henrique, independente do local (primeiro, segundo, terceiro nome), poderia empregar a seguinte sintaxe na clusula WHERE:

import java.sql.*; class Listadados { public static void main (String args[]) { try { String fonte = "jdbc:odbc:ag"; String usuario = ""; String senha = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection conexao; conexao = DriverManager.getConnection(fonte,usuario,senha); Statement conecta = conexao.createStatement(); ResultSet linhas = conecta.executeQuery("Select * FROM pessoafisica WHERE nome LIKE '%Henrique%'"); while (linhas.next()) { System.out.print(linhas.getString("nome") + " - "); System.out.print(linhas.getString("Email") + " - "); System.out.println(linhas.getString("Fone") + " - "); } System.out.println("Final da listagem"); conecta.close(); conexao.close(); } catch(Exception e) { System.out.println("Problemas na conexo, verifique procedimento"); } } }

Observe que agora o nome Henrique est cercado pelo smbolo %, o que faz com que o filtro busque nomes que contenham (independente do local) a palavra Henrique. Em alguns casos voc pode necessitar de uma busca exata e, assim sendo, poder empregar a seguinte estrutura:
import java.sql.*; class Listadados { public static void main (String args[]) { try { String fonte = "jdbc:odbc:ag"; String usuario = ""; String senha = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection conexao; conexao = DriverManager.getConnection(fonte,usuario,senha); Statement conecta = conexao.createStatement(); ResultSet linhas = conecta.executeQuery("Select * FROM pessoafisica WHERE nome = 'Paulo Henrique Matuszewski'"); while (linhas.next()) { System.out.print(linhas.getString("nome") + " - "); System.out.print(linhas.getString("Email") + " - ");

System.out.println(linhas.getString("Fone") + " - "); } System.out.println("Final da listagem"); conecta.close(); conexao.close(); } catch(Exception e) { System.out.println("Problemas na conexo, verifique procedimento"); } } }

No exemplo acima, iremos filtrar a busca pelo registro na qual o nome for exatamente igual Paulo Henrique Matuszewski. No prximo mdulo de aula iremos comear a trabalhar com a interface grfica do Java e banco de dados, melhorando sensivelmente nossas aplicaes.

Mdulo de apostila : Java Nmero : 014 Nmero de pginas :


expressamente proba a reproduo total ou parcial do contedo desta apostila sem a prvia autorizao da High Tec Informtica, estando o infrator sujeito as penalidades previstas em Lei. Este mdulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefcio dos proprietrios das marcas, sem nenhuma inteno de atingir seus direitos.

A High Tec Informtica no comercializa a nenhum ttulo softwares, sendo que os mesmos devero ser adquiridos pelos alunos atravs dos distribuidores credenciados.

Vamos aqui gerar um exemplo de incluso de dados em um banco de dados, porm com o uso da Interface Grfica do Java. Observe a listagem abaixo:
import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.lang.*; import java.net.URL; import java.sql.*; import java.io.*; public class exemplo extends Frame implements ActionListener { JLabel cp1, cp2, cp3; JTextField et1, et2, et3; JButton botao; public exemplo () { setLayout(new GridLayout(5,2)); cp1 = new JLabel("Nome:"); cp2 = new JLabel("Email:"); cp3 = new JLabel("Fone:"); et1 = new JTextField(30); et2 = new JTextField(30); et3 = new JTextField(18); botao = new JButton("INCLUI"); botao.addActionListener(this); add(cp1); add(et1); add(cp2); add(et2); add(cp3); add(et3); add(botao); } public void actionPerformed(ActionEvent event) { janela ap = new janela(); ap.sair(); } public static void main(String args[]) throws IOException { exemplo janela = new exemplo(); janela.setTitle("Inserindo dados com o ambiente grfico"); janela.pack(); janela.show(); } class janela { janela() { }

public void sair() { try { String fonte="jdbc.odbc.ag"; String user = ""; String pass = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection conecta; conecta = DriverManager.getConnection(fonte, user, pass);; Statement comando = conecta.createStatement(); comando.executeUpdate("INSERT INTO pessoafisica (nome, email, fone) VALUES ('"+et1.getText()+"','"+et2.getText()+"','"+et3.getText()+"')"); System.out.println("Processamento concludo"); comando.close(); conecta.close(); } catch (Exception e) { e.printStackTrace(); return; } System.exit(0); } } }

Ao executar o nosso programa, observe como ficou a interface grfica do mesmo:

No prximo mdulo de aula iremos estudar passo a passo todos os procedimentos executados neste programa e conhecer um pouco mais sobre o ambiente grfico do Java.

Mdulo de apostila : Java Nmero : 015 Nmero de pginas :


expressamente proba a reproduo total ou parcial do contedo desta apostila sem a prvia autorizao da High Tec Informtica, estando o infrator sujeito as penalidades previstas em Lei. Este mdulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefcio dos proprietrios das marcas, sem nenhuma inteno de atingir seus direitos.

A High Tec Informtica no comercializa a nenhum ttulo softwares, sendo que os mesmos devero ser adquiridos pelos alunos atravs dos distribuidores credenciados.

O primeiro passo foi importar ao nosso programa as classes necessrias para o ambiente grfico e o trabalho com banco de dados, este procedimento foi realizado nas linhas abaixo:
import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.lang.*; import java.net.URL; import java.sql.*; import java.io.*;

Na linha abaixo, estamos criando a classe exemplo que tambm o nome do nosso arquivo de programa e, estamos preparando a mesma para trabalhar com os eventos necessrios ao desenvolvimento do ambiente grfico na mesma:
public class exemplo extends Frame implements ActionListener {

Primeiro criamos trs variveis que iro representar LABELS. Um Label uma etiqueta ou uma linha de texto em um ambiente grfico (se voc j estudou o Delphi ou o Visual Basic sabe ao certo o que um Label:
JLabel cp1, cp2, cp3;

Em seguida estamos criando trs variveis que iro representar as caixas de texto. Uma caixa de texto na verdade um componente do ambiente grfico que possibilita ao usurio digitar uma determinada informao na mesma e, seu contedo (contedo digitado) ficar armazenado nesta para manipulao posterior:
JTextField et1, et2, et3;

Voltando a realizar uma comparao, se voc conhece o Delphi ou o VB sabe o que um Button. Estamos na linha abaixo criando uma varivel que ir representar um componente do tipo Button (ou simplesmente boto). Os botes so responsveis por uma espcie de procedimento de confirmao, ou seja, o usurio ao clicar em um boto quer que o sistema execute uma determinada tarefa:
JButton botao;

Na linha abaixo, estamos iniciando um mtodo para o programa exemplo e, este mtodo ter a finalidade de montar o ambiente grfico (leia criar a janela) para que o usurio possa interagir com a mesma:
public exemplo () {

O layout da janela ter 5 linhas e duas colunas e, estes parmetros foram passados pela linha de comando abaixo:
setLayout(new GridLayout(5,2));

Nas linhas abaixo, estamos criando as etiquetas e armazenando este grfico sobre a forma de uma varivel. Teremos ento trs etiquetas (cada uma contendo uma frase em especfico em seu interior, que est sendo determinada pela String repassada como parmetro), representadas pelas variveis CP1, CP2 e CP3:
cp1 = new JLabel("Nome:"); cp2 = new JLabel("Email:"); cp3 = new JLabel("Fone:");

Abaixo, estamos criando trs caixas de texto, especificando tambm a sua largura (quantidade de caracteres e serem considerados). Estas caixas de texto esto representadas pelas variveis ET1, ET2, ET3:
et1 = new JTextField(30); et2 = new JTextField(30); et3 = new JTextField(18);

Na linha abaixo, estamos criando o boto, dando ao mesmo um rtulo (um Caption, um nome que ser exibido em seu interior) e, este ser representado pela varivel BOTAO:
botao = new JButton("INCLUI");

O boto criado, para que possa responder a um evento (quando o usurio clica sobre o boto, este ir disparar um evento (ao) conhecida em outras linguagens por OnClick. Ao disparar um evento, o cdigo associado ao mesmo ser executado), para isso deveremos indicar ao sistema que este boto est sendo controlado pelo gerente de eventos do sistema:
botao.addActionListener(this);

Nas linhas abaixo, estamos disponibilizando cada um dos objetos que criamos anteriormente na janela grfica que ser exibida ao usurio. Observe que estamos seguindo uma ordem lgica e, respeitando a quantidade mxima de linhas e colunas, determinada pelo comando SETLAYOUT visto anteriormente:
add(cp1); add(et1); add(cp2); add(et2); add(cp3); add(et3); add(botao); }

Nas linhas abaixo, estamos declarando o mtodo do gerente de eventos, que ser responsvel pelo controle da exibio da janela at o seu fechamento:
public void actionPerformed(ActionEvent event) { janela ap = new janela(); ap.sair(); }

Na linha abaixo, estamos iniciando o mtodo principal de nosso programa:


public static void main(String args[])

Nas linhas abaixo, estamos construindo a janela para o usurio, ou seja, exibindo a janela. Nesta janela iremos inserir um ttulo na respectiva linha (linha de ttulo) e o mtodo Show finalmente exibe a mesma ao usurio:
throws IOException { exemplo janela = new exemplo(); janela.setTitle("Inserindo dados com o ambiente grfico"); janela.pack(); janela.show(); }

Abaixo estamos com os procedimentos normais para trabalhar com tabelas de banco de dados em Java, conforme vimos em captulos anteriores, sendo que a diferena est no comando INSERT, que iremos estudar adiante em detalhes:
class janela { janela() { } public void sair() { try { String fonte="jdbc.odbc.ag"; String user = ""; String pass = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection conecta; conecta = DriverManager.getConnection(fonte, user, pass);; Statement comando = conecta.createStatement(); comando.executeUpdate("INSERT INTO pessoafisica (nome, email, fone) VALUES ('"+et1.getText()+"','"+et2.getText()+"','"+et3.getText()+"')"); System.out.println("Processamento concludo"); comando.close(); conecta.close(); }

catch (Exception e) { e.printStackTrace(); return; } System.exit(0); } } }

O comando INSERT foi modificado em relao ao que estudamos em mdulos anteriores. Observe sua nova sintaxe:

("INSERT INTO pessoafisica (nome, email, fone) VALUES ('"+et1.getText()+"','"+et2.getText()+"','"+et3.getText()+"')")


Nesta sintaxe, ao invs de empregarmos na clusula VALUES os valores de forma fixa, ou seja, indicando diretamente o mesmo, deveremos recuperar o contedo digitado em cada uma das caixas de texto criadas com este propsito. Para isso temos o mtodo gettext(), que extrai o contedo digitado (armazenado) em cada uma das caixas de texto.

Mdulo de apostila : Java Nmero : 016 Nmero de pginas :


expressamente proba a reproduo total ou parcial do contedo desta apostila sem a prvia autorizao da High Tec Informtica, estando o infrator sujeito as penalidades previstas em Lei. Este mdulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefcio dos proprietrios das marcas, sem nenhuma inteno de atingir seus direitos.

A High Tec Informtica no comercializa a nenhum ttulo softwares, sendo que os mesmos devero ser adquiridos pelos alunos atravs dos distribuidores credenciados.

Vamos estudar um pouco mais sobre a interface grfica do Java. Para que seu sistema opere dentro dos padres atuais de desenvolvimento, voc dever ter 4 blocos principais: 1. 2. 3. 4. Bloco de entrada de dados; Bloco de processamento de dados; Bloco de armazenamento de dados; Bloco de sada de dados.

Dos blocos citados, apenas o de entrada de dados e o de sada de dados devero trabalhar (pelos padres atuais) com interfaces grficas. Vamos a um simples exemplo de uma GUI em Java: import java.awt.*; import javax.swing.*; public class grafico extends JComponent { public static void main (String args[]) { JFrame janela = new JFrame("Interface grafica com o usuario"); janela.setSize(280,60); janela.getContentPane().add(new grafico()); janela.setVisible(true); } public void paintComponent(Graphics etiqueta) { etiqueta.drawString("Projeto Aprenda em Casa",50,30); } } Ao executar a rotina acima, teremos o seguinte resultado:

Observe que no exemplo acima, carregamos dois pacotes para gerar componentes GUI (interface grfica com o usurio). Os componentes do pacote swing so escritos, manipulados e exibidos em puro Java, ou seja, componentes Java puros. J os componentes GUI do pacote awt (abstract Windowing toolkit) esto linkados com os recursos GUI da plataforma local e, dependendo da sua plataforma, poderemos ter um resultado diferenciado do exibido no grfico acima.

Um exemplo tpico de uma janela com diversos componentes GUI pode ser obtida atravs do seu navegador Web. Observe o grfico abaixo:

Barra de menus

Botes

Rtulos

campos de texto

O objetivo de um componente GUI possibilitar a interao do sistema com o usurio atravs do mouse ou teclado. Os principais componentes de uma interface GUI so: Com relao a aparncia e o comportamento do seu sistema, os componentes do pacote swing, por serem escritos em java puro, oferecem um grau maior de flexibilidade que os componentes do pacote awt. Quando empregamos o pacote awt, estes iro se basear no sistemas de janela local, da plataforma em uso, para determinar o seu comportamento. No grfico abaixo, temos o hierarquia de herana de classes que so responsveis pela definio do comportamento dos componentes da GUI:

No esquema acima, temos que deixar claro que a classe Component tem por objetivo a definio dos mtodos compatveis com os objetos de uma determinada subclasse, assim sendo, os procedimentos comuns dos componentes GUI ficam localizados na classe Component. J os Containers formam a coleo de componentes relacionados. No programa acima, quando empregamos o JFrames, estamos na verdade anexando componentes ao painel de contedo, ou seja, um container. Observe a seguinte linha do programa que geramos acima: public class grafico extends JComponent { A classe JComponent na verdade uma superclasse para vrios dos componentes Swing, tendo por objetivo definir o conjunto de mtodos que sero aplicados a um determinado objeto de sua subclasse.. Estes componentes possuem vrios recursos, entre eles destacamos: Personalizao de aparncia e comportamento para diferentes plataformas que iro executar o programa; Uso de teclas de atalho para acesso a componentes da GUI; Tratamento de eventos.

No prximo mdulo de aula iremos estudar alguns recursos do componente Swing.

Mdulo de apostila : Java Nmero : 017 Nmero de pginas :


expressamente proba a reproduo total ou parcial do contedo desta apostila sem a prvia autorizao da High Tec Informtica, estando o infrator sujeito as penalidades previstas em Lei. Este mdulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefcio dos proprietrios das marcas, sem nenhuma inteno de atingir seus direitos.

A High Tec Informtica no comercializa a nenhum ttulo softwares, sendo que os mesmos devero ser adquiridos pelos alunos atravs dos distribuidores credenciados.

Vamos detalhar alguns recursos dos componentes do Swing, a comear pelo JLabel, que a classe responsvel por representar os rtulos em um ambiente grfico e, esta uma subclasse do swing.JComponent. Vamos a um simples exemplo abaixo para que voc compreenda melhor esta subclasse: import javax.swing.*; import java.awt.*; import java.awt.event.*; public class rotulo extends JFrame { private JLabel label1, label2, label3; public rotulo() { super( "Projeto Aprenda em Casa" ); Container c = getContentPane(); c.setLayout( new FlowLayout() ); label1 = new JLabel ( "Esta uma label simples" ); label1.setToolTipText( "Este o Label1" ); c.add ( label1 ); label2 = new JLabel ( "da subclasse JLabel" ); label2.setToolTipText ( "Este o Label2" ); c.add ( label2 ); label3 = new JLabel ( "da classe JComponent" ); label3.setToolTipText ( "Este o Label3" ); c.add ( label3 ); setSize( 160,130 ); show(); } public static void main( String args[] ) { rotulo app = new rotulo(); app.addWindowListener( new WindowAdapter() { public void windowClosing( WindowEvent e ) { System.exit( 0 ); } } ); } }

Ao executar o programa acima, teremos o seguinte resultado:

Vamos explicar por partes o sistema acima, porm antes, passe o mouse sobre a primeira linha de texto da janela acima e verifique o que ocorre:

O primeiro passo foi carregar as classes que sero utilizadas em nosso sistema: import javax.swing.*; import java.awt.*; import java.awt.event.*; Em seguida, declaramos trs variveis (leia referncias) da classe JLabel (rtulos), sendo eslas: LABEL1, LABEL2, LABEL3: private JLabel label1, label2, label3; Na linha abaixo, estamos instanciando o objeto JLabel, representado pela referncia Label1 no construtor: label1 = new JLabel ( "Esta uma label simples" ); Nesta sintaxe, estamos criando um JLabel, que ter como rtulo (texto que o acompanha) o contedo ESTA UMA LABEL SIMPLES. Voc j programou ou programa em Delphi ou VB? Se positivo, deve lembrar o que um HINT, ou seja, uma espcie de balo que exibido sempre que o mouse passa por um determinado componente e, na linha seguinte estamos criando um hint para o componente (classe) JLabel. O Hint utilizado normalmente para exibir uma dica. Por exemplo:

posicione o ponteiro do mouse sobre o boto que possui como grfico um disquete da barra de ferramentas do seu Word, observe o que acontecer:

Este um exemplo tpico de Hint. Em nosso sistema, apenas como exemplo, geramos o seguinte Hint para o JLabel1: label1.setToolTipText( "Este o Label1" ); Os mesmos procedimentos so realizados para os Labels 2 e 3. Na linha abaixo, estamos definindo o tamanho da janela que estamos gerando: setSize( 160,130 ); As demais linhas j so de nosso conhecimento.

Mdulo de apostila : Java Nmero : 018 Nmero de pginas :


expressamente proba a reproduo total ou parcial do contedo desta apostila sem a prvia autorizao da High Tec Informtica, estando o infrator sujeito as penalidades previstas em Lei. Este mdulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefcio dos proprietrios das marcas, sem nenhuma inteno de atingir seus direitos.

A High Tec Informtica no comercializa a nenhum ttulo softwares, sendo que os mesmos devero ser adquiridos pelos alunos atravs dos distribuidores credenciados.

Vamos neste mdulo aprender sobre alguns recursos das caixas de edio, onde o usurio poder entrar com dados para interagir com a sua aplicao. Observe a fonte abaixo:
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ctexto extends JFrame { private JTextField ct1, ct2, ct3, ct4; private JPasswordField senha; public ctexto() { super("Caixas de texto"); Container c = getContentPane(); c.setLayout( new FlowLayout() ); ct2 = new JTextField("Entre com o seu nome"); c.add( ct2 ); ct1 = new JTextField( 10 ); c.add( ct1 ); ct3 = new JTextField("Caixa sem edicao",20); ct3.setEditable(false); c.add( ct3 ); ct4 = new JTextField("Entre com sua senha"); c.add( ct4 ); senha = new JPasswordField ( 3 ); c.add (senha ); setSize(325,100); show(); } public static void main (String args[]) { ctexto app = new ctexto(); app.addWindowListener( new WindowAdapter() { public void windowClosing( WindowEvent e ) { System.exit(0); } } ); } }

Ao executar este programa, teremos o seguinte resultado:

No exemplo acima, iniciamos importando as classes que sero utilizadas em nosso sistema:
import java.awt.*; import java.awt.event.*; import javax.swing.*;

Em seguida, declaramos referncias a JTextField para ct1, ct2, ct3 e ct4, ou seja, estas sero instnciadas dentro do sistema e iro representar caixas de texto para que o usurio possa entrar com valores possibilitando assim a interao deste com o programa:
private JTextField ct1, ct2, ct3, ct4;

O mesmo fizemos para senha, que ter sua referncia como sendo um JPasswordField, ou seja, uma caixa de texto especial, que ao invs de exibir o contedo que est sendo digitado, ir exibir asteriscos. Este tipo de componente utilizado geralmente para caixas de senhas:
private JPasswordField senha;

Os procedimentos seguintes, iro construir as caixas de edio na interface grfica:


super("Caixas de texto"); Container c = getContentPane(); c.setLayout( new FlowLayout() ); ct2 = new JTextField("Entre com o seu nome"); c.add( ct2 ); ct1 = new JTextField( 10 ); c.add( ct1 ); ct3 = new JTextField("Caixa sem edicao",20); ct3.setEditable(false); c.add( ct3 ); ct4 = new JTextField("Entre com sua senha"); c.add( ct4 );

Aqui temos uma novidade: quando quisermos que uma caixa de texto no possa ter o seu contedo alterado (ou seja, o usurio no ter como alterar o seu valor), deveremos alterar a propriedade EditTable para false, foi este procedimento adotado na linha 9 da listagem acima. Observe tambm que quando declaramos uma String para uma caixa de texto, a mesma poder ser alterada em tempo de execuo, como o caso da caixa de texto CT2, pois sua propriedade EditTable por default true, observe o grfico abaixo:

Ns alteramos o contedo da caixa de texto editvel, que continha a String (Entre com o seu nome). O mesmo pode ocorrer com a caixa de texto (Entre com sua senha). Em seguida construmos a caixa de texto que ir receber a senha entrada pelo usurio:
ct4 = new JTextField("Entre com sua senha"); c.add( ct4 );

Mas ento o correto no seria utilizar etiquetas (Labels) ao invs de caixas de texto no local de CT2 e CT4, assim o usurio no teria como alterar o seu contedo? Exerccio: Substitua as caixas de texto CT2 e CT4 por labels (etiquetas).

Mdulo de apostila : Java Nmero : 019 Nmero de pginas :


expressamente proba a reproduo total ou parcial do contedo desta apostila sem a prvia autorizao da High Tec Informtica, estando o infrator sujeito as penalidades previstas em Lei. Este mdulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefcio dos proprietrios das marcas, sem nenhuma inteno de atingir seus direitos.

A High Tec Informtica no comercializa a nenhum ttulo softwares, sendo que os mesmos devero ser adquiridos pelos alunos atravs dos distribuidores credenciados.

Um boto em um ambiente grfico utilizado para possibilitar ao usurio uma determinada ao junto ao programa, atravs do click no mesmo.Ao contrrio do que muitos pensam, existem diversas categorias de botes, entre elas destacamos: botes simples; botes de comando; caixas de seleo; botes de opo.

Todos os tipos de botes no Java pertencem a classe javax.swing, atravs da subclasse abstractbutton. Quando temos um boto de comando, o mesmo poder gerar o evento conhecido por ActionEvent. Este evento disparado quando o usurio clica no boto com o ponteiro do mouse. Os botes possuem um rtulo, ou seja, um texto que passa a fazer parte da parte superior do mesmo e, cada um dos rtulos dever ser nico, caso contrrio os JButtons se tornaro ambguos para o usurio. Observe o simples exemplo abaixo:
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class exbotao extends JFrame { private JButton btsimples, btgrafico; public exbotao() { super ("Exemplo de boto"); Container c = getContentPane(); c.setLayout(new FlowLayout() ); btsimples = new JButton ("Botao simples"); c.add (btsimples); Icon imagem1 = new ImageIcon ("rainho.gif"); Icon imagem2 = new ImageIcon ("java1.gif"); btgrafico = new JButton("Botao animado", imagem1); btgrafico.setRolloverIcon( imagem2 ); c.add (btgrafico); ButtonHandler handler = new ButtonHandler(); btsimples.addActionListener ( handler ); btgrafico.addActionListener ( handler ); setSize ( 160,105 ); show(); } public static void main ( String args[] )

exbotao app = new exbotao(); app.addWindowListener( new WindowAdapter() { public void windowClosing ( WindowEvent e ) { System.exit( 0 ); } } );

private class ButtonHandler implements ActionListener { public void actionPerformed( ActionEvent e ) { JOptionPane.showMessageDialog( null, "Voc clicou no : " + e.getActionCommand()); } }

Vamos explicar passo a passo os procedimentos realizados (aqueles comuns aos dos demais exemplos estudados nos mdulos anteriores no sero explicados). Primeiro estamos declarando duas referncias para instanciar a classe JButton, so elas btsimples e btgrafico. O primeiro ir representar um boto sem grfico e o segundo um boto com grfico e tratamento de eventos:
private JButton btsimples, btgrafico;

O primeiro boto criado a partir da seguinte sequncia:


btsimples = new JButton ("Botao simples"); c.add (btsimples);

Observe que o primeiro boto um boto simples, sem maiores recursos, onde o Caption (mensagem exibida dentro do boto) deste ser BOTO SIMPLES. O segundo boto, que ser construdo na sequncia de comandos abaixo, pode apresentar em conjunto com o Caption do mesmo, um cone e, ainda poderemos gerar alguns efeitos, como por exemplo alterar o cone quando o ponteiro do mouse passar sobre o boto:
Icon imagem1 = new ImageIcon ("rainho.gif"); Icon imagem2 = new ImageIcon ("java1.gif"); btgrafico = new JButton("Botao animado", imagem1); btgrafico.setRolloverIcon( imagem2 ); c.add (btgrafico);

O primeiro passo foi definir as duas variveis que representaram um grfico qualquer. Lembrando que este grfico dever ter pequenas dimenses, caso contrrio o mesmo ser exibido de forma incorreta. Em seguida (linha 3 da listagem acima), estamos criando o boto, que alm do Caption BOTAO ANIMADO, ter ao lado deste um cone,

representado pela varivel Imagem1, que est vinculado ao arquivo rainho.gif (os arquivos grficos devero estar localizados no mesmo diretrio da aplicao Java). Na linha 4 da listagem acima, estamos criando o efeito que possibilita alterar o cone que est sendo exibido pelo boto, quando o ponteiro do mouse passar sobre o mesmo, neste definimos o evento (setRolloverIcon) e a figura que ser apresentada (imagem2). Um boto pode gerar eventos, ou seja, receber o clique do ponteiro do mouse. Estaremos ento diante do que conhecemos por ActionEvents e, estes devem ser processados e tratados pelo objeto ActionListener:
ButtonHandler handler = new ButtonHandler(); btsimples.addActionListener ( handler ); btgrafico.addActionListener ( handler );

Quando um dos botes receber um clique, o evento OnClick ser disparado e, teremos ento uma caixa de dilogo informando o boto que recebeu o click.
private class ButtonHandler implements ActionListener { public void actionPerformed( ActionEvent e ) { JOptionPane.showMessageDialog( null, "Voc clicou no : " + e.getActionCommand()); }

Salve e execute o programa acima.

Mdulo de apostila : Java Nmero : 020 Nmero de pginas :


expressamente proba a reproduo total ou parcial do contedo desta apostila sem a prvia autorizao da High Tec Informtica, estando o infrator sujeito as penalidades previstas em Lei. Este mdulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefcio dos proprietrios das marcas, sem nenhuma inteno de atingir seus direitos.

A High Tec Informtica no comercializa a nenhum ttulo softwares, sendo que os mesmos devero ser adquiridos pelos alunos atravs dos distribuidores credenciados.

Neste mdulo de aula vamos comear o estudo do componente JCheckBox, componente que permite a seleo ou no de seu contedo (se est ou no selecionado). Observe o exemplo abaixo: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class cbox extends JFrame { private JTextField texto; private JCheckBox op1, op2, op3; public cbox() { super ( "Exemplo de CheckBox" ); Container c = getContentPane(); c.setLayout(new FlowLayout()); texto = new JTextField("Voc Programa em que linguagem?", 19); texto.setFont(new Font("Arial", Font.PLAIN, 12)); c.add(texto); op1 = new JCheckBox ("Delphi"); c.add (op1); op2 = new JCheckBox ("VB"); c.add (op2); op3 = new JCheckBox ("Outros"); c.add (op3); addWindowListener( new WindowAdapter() { public void windowClosing( WindowEvent e) { System.exit(0); } } ); setSize (275,100); show(); } public static void main( String args[]) { new cbox(); } }

Ao executar o sistema acima, teremos o seguinte resultado:

Observe que voc poder marcar uma ou mais linguagens, pois as caixas de seleo, apesar de estarem dispostas mesma linha e estarem relacionadas a um mesmo assunto, trabalham de forma independente, uma das outras. Aqui temos uma grande novidade, pois na caixa de texto, especificamos a fonte que seria utilizada para o texto apresentado no interior da mesma, observe a linha abaixo: texto.setFont(new Font("Arial", Font.PLAIN, 12)); Primeiro especificamos a fonte (arial), em seguida que a mesma seria da forma padro (PLAIN), ou seja, sem estar em negrito, itlico, etc... e do tamanho 12. Quando criamos uma caixa de seleo, temos que especificar tambm o rtulo que ir acompanhar a mesma, caso contrrio o usurio no saber ao certo a opo que est marcando: op1 = new JCheckBox ("Delphi"); Os demais procedimentos so aqueles que j conhecemos. Voc poder tambm tratar eventos nas caixas de seleo. Vamos imaginar que, ao selecionar uma ou outra caixa de seleo, fosse gerada uma janela indicando a linguagem base de cada uma das plataformas de desenvolvimento citadas. Teramos ento a seguinte estrutura: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class cbox extends JFrame { private JTextField texto; private JCheckBox op1, op2, op3; public cbox() { super ( "Exemplo de CheckBox" ); Container c = getContentPane(); c.setLayout(new FlowLayout());

texto = new JTextField("Voc Programa em que linguagem?", 19); texto.setFont(new Font("Arial", Font.PLAIN, 12)); c.add(texto); op1 = new JCheckBox ("Delphi"); c.add (op1); op2 = new JCheckBox ("VB"); c.add (op2); op3 = new JCheckBox ("Outros"); c.add (op3); cboxHandler handler = new cboxHandler(); op1.addItemListener ( handler ); op2.addItemListener ( handler ); addWindowListener( new WindowAdapter() { public void windowClosing( WindowEvent e) { System.exit(0); } } ); setSize (275,100); show(); } public static void main( String args[]) { new cbox(); } private class cboxHandler implements ItemListener { public void itemStateChanged ( ItemEvent e ) { if ( e.getSource() == op1 ) if ( e.getStateChange() == ItemEvent.SELECTED ) JOptionPane.showMessageDialog ( null, "Voc programa em pascal"); if ( e.getSource() == op2 ) if ( e.getStateChange() == ItemEvent.SELECTED ) JOptionPane.showMessageDialog ( null, "Voc programa em Basic"); }

} } Observe que para testarmos se um item da caixa de seleo est ou no selecionado, utilizamos o evento ItemEvent.SELECTED, ou seja, afirmando se o mesmo est ou no selecionado. No prximo mdulo de aula iremos estudar o JRadioButton.

Mdulo de apostila : Java Nmero : 021 Nmero de pginas :


expressamente proba a reproduo total ou parcial do contedo desta apostila sem a prvia autorizao da High Tec Informtica, estando o infrator sujeito as penalidades previstas em Lei. Este mdulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefcio dos proprietrios das marcas, sem nenhuma inteno de atingir seus direitos.

A High Tec Informtica no comercializa a nenhum ttulo softwares, sendo que os mesmos devero ser adquiridos pelos alunos atravs dos distribuidores credenciados.

Os RadioButtons, por fazerem parte de um grupo de botes de opo, no permitem a seleo de mais de um item do seu grupo. Os demais procedimentos so muito similares aos dos JCheckBox. Vamos desenvolver uma espcie de controle de fonte de um editor de texto, onde o usurio poder selecionar se quer um texto especifico em negrito, itlico, sublinhado, etc... Digite o exemplo abaixo:
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class radiob extends JFrame { private JTextField t; private Font fontecomum, fontenegrito, fonteitalico, fnegritoitalico; private JRadioButton normal, negrito, italico, negitalico; private ButtonGroup radioGroup; public radiob() { super ("Botes de radio"); Container c = getContentPane(); c.setLayout ( new FlowLayout() ); t = new JTextField ("Projeto Aprenda em Casa",25); c.add(t); normal = new JRadioButton("Normal", true); c.add(normal); negrito = new JRadioButton("Negrito", false); c.add(negrito); italico = new JRadioButton ("Italico", false); c.add(italico); negitalico = new JRadioButton ("Negrito/Italico", false); c.add(negitalico); RadioButtonHandler handler = new RadioButtonHandler(); normal.addItemListener (handler); negrito.addItemListener (handler); italico.addItemListener (handler); negitalico.addItemListener (handler); radioGroup = new ButtonGroup(); radioGroup.add (normal); radioGroup.add (negrito); radioGroup.add (italico); radioGroup.add (negitalico); fontecomum = new Font("Arial",Font.PLAIN, 12); fontenegrito = new Font("Arial",Font.BOLD, 12); fonteitalico = new Font("Arial",Font.ITALIC, 12); fnegritoitalico = new Font("Arial",Font.BOLD + Font.ITALIC, 12); t.setFont ( fontecomum );

setSize(330,100); show();

public static void main (String args[] ) { radiob app = new radiob(); app.addWindowListener( new WindowAdapter() { public void windowClosing ( WindowEvent e ) { System.exit(0); } } ); } private class RadioButtonHandler implements ItemListener { public void itemStateChanged ( ItemEvent e ) { if ( e.getSource() == normal) t.setFont ( fontecomum ); else if ( e.getSource() == negrito ) t.setFont ( fontenegrito ); else if ( e.getSource() == italico ) t.setFont ( fonteitalico ); else if ( e.getSource() == negitalico ) t.setFont ( fnegritoitalico ); } } } t.repaint();

Ao executar o programa acima, teremos como resultado a janela que segue:

As novidades neste programa encontradas so as que seguem: O primeiro passo foi criar os botes de opo, conforme podemos observar no seguinte trecho do programa:

normal = new JRadioButton("Normal", true); c.add(normal); negrito = new JRadioButton("Negrito", false); c.add(negrito); italico = new JRadioButton ("Italico", false); c.add(italico); negitalico = new JRadioButton ("Negrito/Italico", false); c.add(negitalico);

Um pouco mais abaixo, criamos um grupo, ou seja, estabelecemos quais os botes de rdio faro parte do mesmo grupo (neste nosso exemplo temos apenas um grupo):
radioGroup = new ButtonGroup(); radioGroup.add (normal); radioGroup.add (negrito); radioGroup.add (italico); radioGroup.add (negitalico);

Os eventos que sero respondidos pelos botes de rdio foram registrados um pouco acima, conforme podemos observar no seguinte trecho de listagem:
RadioButtonHandler handler = new RadioButtonHandler(); normal.addItemListener (handler); negrito.addItemListener (handler); italico.addItemListener (handler); negitalico.addItemListener (handler);

Em seguida, estamos gerando variveis que iro representar cada um dos estados de acordo com o boto que ser selecionado. Estes estados sero tratados na bateria de testes do evento click de cada um dos botes, ou seja, de acordo com o boto que estiver ativado, uma das instncias abaixo sero aplicadas:
fontecomum = new Font("Arial",Font.PLAIN, 12); fontenegrito = new Font("Arial",Font.BOLD, 12); fonteitalico = new Font("Arial",Font.ITALIC, 12); fnegritoitalico = new Font("Arial",Font.BOLD + Font.ITALIC, 12); t.setFont ( fontecomum );

Observe no trecho abaixo, onde os eventos so tratados, a concretizao da afirmativa que realizamos no item acima, ou seja, de acordo com o boto de rdio que estiver selecionado, uma das variveis acima sero aplicadas para que em seguida, este tipo de fonte seja aplicada a caixa de texto que faz parte do programa:
private class RadioButtonHandler implements ItemListener { public void itemStateChanged ( ItemEvent e ) { if ( e.getSource() == normal) t.setFont ( fontecomum ); else if ( e.getSource() == negrito ) t.setFont ( fontenegrito ); else if ( e.getSource() == italico ) t.setFont ( fonteitalico ); else if ( e.getSource() == negitalico ) t.setFont ( fnegritoitalico ); } t.repaint();

No prximo mdulo de aula iremos estudar o JComboBox.

Mdulo de apostila : Java Nmero : 022 Nmero de pginas :


expressamente proba a reproduo total ou parcial do contedo desta apostila sem a prvia autorizao da High Tec Informtica, estando o infrator sujeito as penalidades previstas em Lei. Este mdulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefcio dos proprietrios das marcas, sem nenhuma inteno de atingir seus direitos.

A High Tec Informtica no comercializa a nenhum ttulo softwares, sendo que os mesmos devero ser adquiridos pelos alunos atravs dos distribuidores credenciados.

Uma combobox uma caixa contendo uma lista de itens para que o usurio escolha um destes. Vamos gerar um exemplo na qual o usurio poder escolher na caixa de listagem um determinado fabricante e, aps escolher o mesmo, ser exibido um grfico (gif) contendo a logomarca deste. Veja a fonte do sistema abaixo:
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class combo extends JFrame { private JComboBox empresas; private JLabel label; private String logomarca[] = { "microsoft.gif","borland.gif","oracle.gif","macromedia.gif" }; private Icon simbolo[]= { new ImageIcon( logomarca[ 0 ] ), new ImageIcon( logomarca[ 1 ] ), new ImageIcon( logomarca[ 2 ] ), new ImageIcon( logomarca[ 3 ] ) }; public combo() { super ("Escolha sua favorita"); Container c = getContentPane(); c.setLayout ( new FlowLayout() ); empresas = new JComboBox ( logomarca ); empresas.setMaximumRowCount( 2 ); empresas.addItemListener( new ItemListener() { public void itemStateChanged( ItemEvent e ) { label.setIcon ( simbolo[ empresas.getSelectedIndex() ] ); } } ); c.add( empresas ); label = new JLabel( simbolo[ 0 ] ); c.add( label ); setSize( 350,100 ); show(); } public static void main( String args[] ) { combo trataevento = new combo(); trataevento.addWindowListener( new WindowAdapter() { public void windowClosing( WindowEvent e ) { System.exit( 0 ); } }

); } }

O primeiro passo foi instanciar a classe JComboBox no sistema:


private JComboBox empresas;

Depois criamos uma array contendo Strings que, alm de oferecer o nome da empresa, iro fornecer o nome do arquivo GIF que ser carregado de acordo com a seleo do usurio:
private String logomarca[] = { "microsoft.gif","borland.gif","oracle.gif","macromedia.gif" };

Em seguida estamos lanando cada um dos valores criados para a array logomarca a varivel que ser utilizada para carregar a imagem de acordo com a empresa selecionada:
private Icon simbolo[]= { new ImageIcon( logomarca[ 0 ] ), new ImageIcon( logomarca[ 1 ] ), new ImageIcon( logomarca[ 2 ] ), new ImageIcon( logomarca[ 3 ] ) };

Uma das novidades neste sistema o emprego do mtodo SetMaximumRowCount para especificar o nmero de itens que sero exibidos quando a caixa de combinao for aberta. No nosso exemplo especificamos um total de 2 itens sendo exibidos:
empresas = new JComboBox ( logomarca ); empresas.setMaximumRowCount( 2 );

Os demais procedimentos j so de seu conhecimento.