Sei sulla pagina 1di 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 byte-
code 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












Linux
Mac
Windows
Arquivo binrio
Windows
Arquivo binrio Mac
Arquivo binrio Linux

Programa Java:












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.
Bytecode
independente
da plataforma
Interpretada
(Windows)
Interpretada
(Mac)
Interpretada
( Linux)



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 J2EE
TM
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 Um nome;
o Um tipo de dado que ir armazenar;
o Um tamanho;
o Um valor;
o 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 Exemplo de expresso no
Java
+ adio Numero1 + 10;
- subtrao Numero1 10;
* multiplicao Numero1 * 10;
/ diviso Numero1 / 10;
% mdulo 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 Precedncia
( ) parnteses 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.
* / % Multiplicao,
diviso e mdulo
Avaliados aps a ordem dos pares dos parnteses e, em
caso de incidncia destas operaes, sero avaliados da
esquerda para a direita.
+ - Soma e subtrao Avaliados por ltimo e, em caso de incidncia destas
operaes, sero avaliados da esquerda para a direita.

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 soma dos numeros e + total, Resultado
total,JOptionPane.PLAIN_MESSAGE);






Vimos at este ponto alguns modelos de caixa de dilogo padro do Java. Veja na tabela abaixo
os tipos existentes:

Tipo de janela objetivo
JOptionPane.ERROR_MESSAGE Tem o objetivo de exibir uma janela de dilogo
com uma mensagem de erro ao usurio
JOptionPane.INFORMATION_MESSAGE Tem o objetivo de exibir uma janela de dilogo
do tipo mensagem de informao ao usurio
JOptionPane.WARNING_MESSAGE Tem o objetivo de exibir uma janela de dilogo
do tipo mensagem de advertncia ao usurio
JOptionPane.QUESTION_MESSAGE Tem o objetivo de exibir uma janela de dilogo
do tipo interrogao (pergunta)
JOptionPane.PLAIN_MESSAGE 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 Espao ocupado Valores possveis
char 2 bytes Armazena apenas um caracter, podendo este ser um
caracter de controle.
String varivel Armazena Strings de caracter
boolean 1 byte True ou False
float 4 bytes 3,4E-38 a 3,4E+38


double 8 bytes 1,7E-308 a 1,7E+308
byte 1 byte -128 a 127
short 2 bytes -32.768 a 32767
int 4 bytes -2.147.483.648 a 2.147.383.647
long 8 bytes -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 Objetivo
Math.abs Retorna o valor absoluto de um nmero
Math.sqrt Retorna o valor da raiz quadrada de um nmero
Math.round Retorna o nmero oferecido como parmetro, arredondado
para o seu inteiro seguinte
Math.floor Arredonda o valor de um nmero para baixo
Math.ceil Arredonda o valor de um nmero para cima
Math.min(lista valores) Retorna o menor valor de um conjunto de nmeros


Math.max(lista valores) Retorna o maior valor de um conjunto de nmeros
(int)(Math.random()) 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 boolean break byte case
catch char class continue default
do double else Extends false
final finally float For if
implements import instanceof int interface
long native new null package
private protected public return short
static super switch synchronized this
throw throws transient true try
void volatile while const 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
guinte diretrio:

se


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
ma tima fonte de pesquisa:

u




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
xemplo a JApplet do pacote swing.
pplet). Quando
tilizamos esta sintaxe estamos na verdade utilizando dois tipos de classes:

A classe derivada -> que ir herdar caractersticas da classe principal.
as
aractersticas, sendo muito mais simples apenas fazer herdar as mesmas na nova classe.
oid informa que este mtodo no ir retornar nenhum
sultado ao completar a sua tarefa.
e de G. Este objeto utilizado para possibilitar o desenho de
agens grficas no Applet.
e

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 a
u
A super classe -> classe principal da estrutura (JApplet);

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 est
c


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 v
re

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 nom
im



Observe tambm na mesma linha que utilizamos a palavra-chave public para que o
ppletviewer passa chamar o mtodo Paint.
ploapplet.class. A
nte do arquivo HTML que tem esta funo pode ser observada abaixo:
e=Exemploapplet.class width=400 height=50>

/html>
na
esma pasta onde o applet foi gerado. Aps este procedimento basta digitar o comando:
ppletviewer Exemploapplet.htm
No prximo mdulo de aula iremos gerar outros applets de exemplo.
a

Agora teremos que gerar o arquivo HTML que ir carregar a classe Exem
fo

<html>
<applet cod
</applet>
<

Este arquivo dever ser salvo com o nome Exemploapplet.htm e, dever estar presente
m

a





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
ara armazenar os dados em um computador, normalmente so empregados os Softwares
emos em nosso site um curso completo de Access 2000 (sugerimos que o aluno baixe e
bserve abaixo a cpia de uma tela do Access com o exemplo de uma tabela:
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.

P
conhecidos por SGBDs (Sistemas Gerenciadores de Banco de Dados), ou seja, programas
que administram os dados que devero ser armazenados eletronicamente.

T
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).

O



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

A







s tabelas por sua vez possuem um nome que identificam a mesma e, neste caso temos a
este mdulo de aula no vamos detalhar a forma de criar tabelas no Access, maiores
ps criar o banco de dados, voc dever criar o que chamamos de front-ends, que so
oc j ouviu falar em SQL? Provavelmente sim, porm aqui vamos apresentar alguns
xistem diversas formas de emprego dos comandos que compe a linguagem SQL, dentre
EMBUTIDA -> Quando o SQL invocado dentro de uma linguagem;
mentas que

s comandos mais comuns do SQL so:
SELECT -> para selecionar um conjunto de dados;
s;
a tabela;

ferecemos um curso gratuito de SQL Server 7 em nosso site e, em determinados pontos
A
tabela ALUNO. Observe o nome da tabela na barra de ttulo da janela.

N
detalhes no curso disponvel em nosso site com o ttulo de Access 2000 ou Access XP.

A
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.

V
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.

E
elas destacamos:

RAD -> geradores de aplicaes, que nada mais so do que ferra
proporcionam gerar de forma automtica rotinas e/ou aplicaes, gerando
automaticamente o cdigo para o programa e acesso aos dados.
O

CREATE TABLE -> para criar a estrutura das tabela
INSERT -> para inserir dados em tabelas;
UPDATE -> para atualizar os dados de um
DELETE -> para excluir os dados de uma tabela;
DROP TABLE -> para excluir uma tabela.
O
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:



sigla ODBC significa Open Database Connectivity e, um sistema com grande A
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
as qual deverei usar, o ODBC ou o JDBC? O JDBC mais simples de ser configurado e,

(Java Database Connectivity), que a interface que proporciona o acesso a banco de dados
relacionais atravs de aplicaes Java.

M
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
1. Clique na opo de menu <INICIAR>;
NTROLE>;
cone <FERRAMENTAS
5. um clique duplo no cone FONTE DE DADOS ODBC.

utilizada atualmente no mercado). Para configurar esta fonte de dados, siga os passos
abaixo:

2. V at a opo <CONFIGURAES>;
3. D um clique na opo <PAINEL DE CO
4. Na janela que se abre, d um clique duplo no
ADMINISTRATIVAS>;
Na janela que se abre, d
Neste ponto ser apresentada a seguinte janela:


6. Selecione a guia <USER DNS>;
s que ser utilizado no sistema a ser desenvolvido
8. a:

7. Selecione o tipo de banco de dado
(no nosso exemplo iremos trabalhar com o banco de dados MS Access);
Clique sobre o boto CONFIGURE, ser ento apresenta a seguinte janel















9. Na janela acima voc dever configurar a sua fonte de dados, preenchendo os

Nome da fonte de dados -> digite o nome (apelido) que ser dado a sua fonte
descrever o objetivo da
pela fonte

seguintes campos:
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
fonte de dados. O preenchimento deste campo no obrigatrio;
Para selecionar o banco de dados Access (MDB) a ser utilizado
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
1. Crie um banco de dados no Access com o nome de Agenda;
inte estrutura:

este exemplo, siga os passos abaixo:

2. Crie uma tabela com o nome de PESSOAFISICA com a segu


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
5. a classe que possibilita a comunicao com um banco

port java.sql.*;
6. Aps declarar a classe que ir manipular o banco de dados, deveremos preparar as
ido da expresso
b. resenta o nome do usurio cadastrado para acessar o banco de
c. do usurio cadastrado para acessar o banco de

seguir a seguinte sequncia:
O primeiro passo importar
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:
im

variveis que iro representar os seguintes dados (do tipo String):
a. String que representa o nome da fonte de dados, preced
jdbc:odbc:;
String que rep
dados. Se o banco de dados no possuir restrio de acesso, deveremos ter
aqui uma String nula (vazia);
String que representa a senha
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

lass.forName(sun.jdbc.odbc.JdbcOdbcDriver);
8. Aps este procedimento, deveremos criar uma varivel que ir representar a

onnection varivel_conexao
9. Deveremos estabelecer ento a conexo com o uso da varivel que acabamos de

arivel_conexao = DriverManager.getConnection(var1, var2, var3)
Sendo que VAR1 representa a varivel com o nome da fonte de dados, VAR2 que
10. s demais procedimentos so aqueles que iro realizar a manipulao dos dados
11. rios, deveremos fechar a conexo, atravs do

arivel_conexao.close();
amos a um exemplo completo abaixo:
o banco de dados a ser utilizado no programa. Esta linha tem a seguinte sintaxe:
C

conexo e, esta varivel dever ser precedida da palavra reservada Connection,
atravs do emprego da seguinte sintaxe:
C

criar no procedimento anterior e, as trs variveis citadas no item 6, atravs do
emprego do seguinte comando/sintaxe:
v

representa a String que contm o nome do usurio e VAR3 que representa a String
que contm o nome do usurio.

O
(incluso, alterao, excluso, etc...)
Aps todos os procedimentos necess
seguinte comando:
v

V























bserve que no exemplo acima empregamos um mtodo para a verificao de erros. O
o executar este pequeno exemplo, teremos o seguinte resultado:
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.

A



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










Aps compilado:



gora que j sabemos gerar a conexo com uma base de dados, no prximo mdulo de aula A
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.
port java.sql.*;

c void main (String args[]) {
g fonte = "jdbc:odbc:ag";
bc.JdbcOdbcDriver");
pessoafisica");
as.next()) {
s.getString("nome") + " - ");
t.println("Final da listagem");
ption e)
ystem.out.println("Problemas na conexo, verifique procedimento");
s procedimentos aqui adotados so similares aos dos mdulos anteriores, sendo que, aps
Vamos gerar um pequeno exemplo onde todas as linhas e colunas da tabela pessoafisica
sero exibidos:

im
class Listadados {
public stati
try {
Strin
String usuario = "";
String senha = "";
Class.forName("sun.jdbc.od
Connection conexao;
conexao = DriverManager.getConnection(fonte,usuario,senha);
Statement conecta = conexao.createStatement();
ResultSet linhas = conecta.executeQuery("Select * FROM

while (linh
System.out.print(linha
System.out.print(linhas.getString("Email") + " - ");
System.out.println(linhas.getString("Fone") + " - ");
}
System.ou
conecta.close();
conexao.close();
}
catch(Exce
{
S
}
}
}

O
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
port java.sql.*;

tic void main (String args[]) {
g fonte = "jdbc:odbc:ag";
bc.JdbcOdbcDriver");
onnection(fonte,usuario,senha);
essoafisica order by nome");
s.next()) {
s.getString("nome") + " - ");
.println("Final da listagem");
ption e)
ystem.out.println("Problemas na conexo, verifique procedimento");
o seu Script conforme o que segue:

im
class Listadados {
public sta
try {
Strin
String usuario = "";
String senha = "";
Class.forName("sun.jdbc.od
Connection conexao;
conexao = DriverManager.getC
Statement conecta = conexao.createStatement();
ResultSet linhas = conecta.executeQuery("Select * FROM p

while (linha
System.out.print(linha
System.out.print(linhas.getString("Email") + " - ");
System.out.println(linhas.getString("Fone") + " - ");
}
System.out
conecta.close();
conexao.close();
}
catch(Exce
{
S
}
}
}

lgumas observaes: Observe que estas linhas estaro disponveis na memria do A
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.*;

void main (String args[]) {
c:odbc:ag";
.JdbcOdbcDriver");
nnection(fonte,usuario,senha);
il FROM pessoafisica order by nome");
s.getString("nome") + " - ");
tion e)
Problemas na conexo, verifique procedimento");
class Listadados {
public static
try {
g fonte = "jdb Strin
String usuario = "";
String senha = "";
c Class.forName("sun.jdbc.odb
Connection conexao;
conexao = DriverManager.getCo
Statement conecta = conexao.createStatement();
ResultSet linhas = conecta.executeQuery("Select nome, ema

s.next()) { while (linha
System.out.print(linha
System.out.print(linhas.getString("Email") + " - ");
}
println("Final da listagem"); System.out.
conecta.close();
conexao.close();
}
catch(Excep
{
ystem.out.println(" S
}
}
}













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
port java.sql.*;
c void main (String args[]) {
fonte = "jdbc:odbc:ag";
bc.JdbcOdbcDriver");
onnection(fonte,usuario,senha);
M pessoafisica WHERE

has.next()) {
.getString("nome") + " - ");
t.println("Final da listagem");
ption e)
stem.out.println("Problemas na conexo, verifique procedimento");

bserve que a nica novidade aqui est na estrutura do comando SELECT do SQL, onde
e voc quisesse aplicar uma pesquisa que buscasse todos os alunos que tivessem o nome
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:

im
class Listadados {
public stati
try {
String
String usuario = "";
String senha = "";
Class.forName("sun.jdbc.od
Connection conexao;
conexao = DriverManager.getC
Statement conecta = conexao.createStatement();
ResultSet linhas = conecta.executeQuery("Select * FRO
nome LIKE 'Paulo%'");

while (lin
System.out.print(linhas
System.out.print(linhas.getString("Email") + " - ");
System.out.println(linhas.getString("Fone") + " - ");
}
System.ou
conecta.close();
conexao.close();
}
catch(Exce
{
Sy
}
}
}

O
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.

S
Henrique, independente do local (primeiro, segundo, terceiro nome), poderia empregar a
seguinte sintaxe na clusula WHERE:










import java.sql.*;
c void main (String args[]) {
fonte = "jdbc:odbc:ag";
bc.JdbcOdbcDriver");
onnection(fonte,usuario,senha);
M pessoafisica WHERE
has.next()) {
.getString("nome") + " - ");
t.println("Final da listagem");
ption e)
stem.out.println("Problemas na conexo, verifique procedimento");

bserve que agora o nome Henrique est cercado pelo smbolo %, o que faz com que o
m alguns casos voc pode necessitar de uma busca exata e, assim sendo, poder empregar
port java.sql.*;
c void main (String args[]) {
fonte = "jdbc:odbc:ag";
bc.JdbcOdbcDriver");
onnection(fonte,usuario,senha);
M pessoafisica WHERE
has.next()) {
.getString("nome") + " - ");
class Listadados {
public stati
try {
String
String usuario = "";
String senha = "";
Class.forName("sun.jdbc.od
Connection conexao;
conexao = DriverManager.getC
Statement conecta = conexao.createStatement();
ResultSet linhas = conecta.executeQuery("Select * FRO
nome LIKE '%Henrique%'");

while (lin
System.out.print(linhas
System.out.print(linhas.getString("Email") + " - ");
System.out.println(linhas.getString("Fone") + " - ");
}
System.ou
conecta.close();
conexao.close();
}
catch(Exce
{
Sy
}
}
}

O
filtro busque nomes que contenham (independente do local) a palavra Henrique.

E
a seguinte estrutura:

im
class Listadados {
public stati
try {
String
String usuario = "";
String senha = "";
Class.forName("sun.jdbc.od
Connection conexao;
conexao = DriverManager.getC
Statement conecta = conexao.createStatement();
ResultSet linhas = conecta.executeQuery("Select * FRO
nome = 'Paulo Henrique Matuszewski'");

while (lin
System.out.print(linhas
System.out.print(linhas.getString("Email") + " - ");


System.out.println(linhas.getString("Fone") + " - ");
}
System.out.println("Final da listagem");
ption e)
stem.out.println("Problemas na conexo, verifique procedimento");

o exemplo acima, iremos filtrar a busca pelo registro na qual o nome for exatamente igual
o prximo mdulo de aula iremos comear a trabalhar com a interface grfica do Java e
conecta.close();
conexao.close();
}
catch(Exce
{
Sy
}
}
}

N
Paulo Henrique Matuszewski.

N
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
port java.awt.*;
nt.*;
;
a linha abaixo, estamos criando a classe exemplo que tambm o nome do nosso
ublic class exemplo extends Frame implements ActionListener {
rimeiro criamos trs variveis que iro representar LABELS. Um Label uma etiqueta ou
grfico e o trabalho com banco de dados, este procedimento foi realizado nas linhas abaixo:


im
import java.awt.eve
import javax.swing.*;
import java.lang.*;
import java.net.URL
import java.sql.*;
import java.io.*;

N
arquivo de programa e, estamos preparando a mesma para trabalhar com os eventos
necessrios ao desenvolvimento do ambiente grfico na mesma:

p

P
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;
m seguida estamos criando trs variveis que iro representar as caixas de texto. Uma E
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;
oltando a realizar uma comparao, se voc conhece o Delphi ou o VB sabe o que um
JButton botao;
a linha abaixo, estamos iniciando um mtodo para o programa exemplo e, este mtodo
emplo () {
layout da janela ter 5 linhas e duas colunas e, estes parmetros foram passados pela
setLayout(new GridLayout(5,2));

V
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:



N
ter a finalidade de montar o ambiente grfico (leia criar a janela) para que o usurio possa
interagir com a mesma:

public ex

O
linha de comando abaixo:






Nas linhas abaixo, estamos criando as etiquetas e armazenando este grfico sobre a forma
cp1 = new JLabel("Nome:");

baixo, estamos criando trs caixas de texto, especificando tambm a sua largura
JTextField(30);
a linha abaixo, estamos criando o boto, dando ao mesmo um rtulo (um Caption, um
ew JButton("INCLUI");
que possa responder a um evento (quando o usurio clica sobre o
botao.addActionListener(this);
aixo, estamos disponibilizando cada um dos objetos que criamos
add(cp1);
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:

cp2 = new JLabel("Email:");
cp3 = new JLabel("Fone:");

A
(quantidade de caracteres e serem considerados). Estas caixas de texto esto representadas
pelas variveis ET1, ET2, ET3:

et1 = new
et2 = new JTextField(30);
et3 = new JTextField(18);

N
nome que ser exibido em seu interior) e, este ser representado pela varivel BOTAO:

botao = n

O boto criado, para
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:



Nas linhas ab
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(et1);
add(cp2);
add(et2);
add(cp3);
add(et3);
add(botao);
}












Nas linhas abaixo, estamos declarando o mtodo do gerente de eventos, que ser
public void actionPerformed(ActionEvent event) {
, estamos iniciando o mtodo principal de nosso programa:
public static void main(String args[])
as linhas abaixo, estamos construindo a janela para o usurio, ou seja, exibindo a janela.
responsvel pelo controle da exibio da janela at o seu fechamento:


janela ap = new janela();
ap.sair();
}

Na linha abaixo



N
Nesta janela iremos inserir um ttulo na respectiva linha (linha de ttulo) e o mtodo Show
finalmente exibe a mesma ao usurio:

throws IOException {
= new exemplo();
m o ambiente grfico");
baixo estamos com os procedimentos normais para trabalhar com tabelas de banco de
exemplo janela
janela.setTitle("Inserindo dados co
janela.pack();
janela.show();
}


A
dados em Java, conforme vimos em captulos anteriores, sendo que a diferena est no
comando INSERT, que iremos estudar adiante em detalhes:


class janela {
() {
sair() {
ring fonte="jdbc.odbc.ag";
ame("sun.jdbc.odbc.JdbcOdbcDriver");
conecta;
onnection(fonte, user, pass);;
comando = conecta.createStatement();
me, email, fone)
ALUE ('"+et1.getText()+"','"+et
t.println("Processamento concludo");
close();
janela
}
public void
try
{
St
String user = "";
String pass = "";

Class.forN

Connection
conecta = DriverManager.getC

Statement
comando.executeUpdate("INSERT INTO pessoafisica (no
V S 2.getText()+"','"+et3.getText()+"')");

System.ou

comando.
conecta.close();
}


catch (Exception e) {
);
comando INSERT foi modificado em relao ao que estudamos em mdulos anteriores.
INSERT INTO pessoafisica (nome, email, fone) VALUES
esta sintaxe, ao invs de empregarmos na clusula VALUES os valores de forma fixa, ou
e
e.printStackTrace();
return;
}
System.exit(0
}
}
}

O
Observe sua nova sintaxe:

("
('"+et1.getText()+"','"+et2.getText()+"','"+et3.getText()+"')")

N
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(), qu
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. Bloco de entrada de dados;
2. Bloco de processamento de dados;
3. Bloco de armazenamento de dados;
4. 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
port javax.swing.*;
nt.*;
ublic class rotulo extends JFrame {
abel3;
otulo()
per( "Projeto Aprenda em Casa" );

label simples" );
new JLabel ( "da subclasse JLabel" );
new JLabel ( "da classe JComponent" );
160,130 );
tic void main( String args[] )
tulo app = new rotulo();
ng( WindowEvent e )
stem.exit( 0 );
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:

im
import java.awt.*;
import java.awt.eve

p
private JLabel label1, label2, l

public r
{
su
Container c = getContentPane();
c.setLayout( new FlowLayout() );
label1 = new JLabel ( "Esta uma
label1.setToolTipText( "Este o Label1" );
c.add ( label1 );

label2 =
label2.setToolTipText ( "Este o Label2" );
c.add ( label2 );

label3 =
label3.setToolTipText ( "Este o Label3" );
c.add ( label3 );

setSize(
show();
}
public sta
{
ro
app.addWindowListener(
new WindowAdapter() {
public void windowClosi
{
Sy
}
}
);
}
}




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:
port javax.swing.*;
nt.*;
m seguida, declaramos trs variveis (leia referncias) da classe JLabel (rtulos), sendo
private JLabel label1, label2, label3;
a linha abaixo, estamos instanciando o objeto JLabel, representado pela referncia Label1
label1 = new JLabel ( "Esta uma label simples" );
esta sintaxe, estamos criando um JLabel, que ter como rtulo (texto que o acompanha) o
oc j programou ou programa em Delphi ou VB? Se positivo, deve lembrar o que um

im
import java.awt.*;
import java.awt.eve

E
eslas: LABEL1, LABEL2, LABEL3:




N
no construtor:



N
contedo ESTA UMA LABEL SIMPLES.

V
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
port java.awt.*;
nt.*;
ublic class ctexto extends JFrame {
t3, ct4;
to()
per("Caixas de texto");
seu nome");
10 );
Caixa sem edicao",20);
Entre com sua senha");
rdField ( 3 );
void main (String args[])
ctexto app = new ctexto();
g( WindowEvent e )
System.exit(0);
o executar este programa, teremos o seguinte resultado:
poder entrar com dados para interagir com a sua aplicao. Observe a fonte abaixo:

im
import java.awt.eve
import javax.swing.*;

p
private JTextField ct1, ct2, c
private JPasswordField senha;

public ctex
{
su
Container c = getContentPane();
c.setLayout( new FlowLayout() );
ct2 = new JTextField("Entre com o
c.add( ct2 );
ct1 = new JTextField(
c.add( ct1 );
ct3 = new JTextField("
ct3.setEditable(false);
c.add( ct3 );
ct4 = new JTextField("
c.add( ct4 );
senha = new JPasswo
c.add (senha );
setSize(325,100);
show();
}
public static
{

app.addWindowListener(
new WindowAdapter() {
public void windowClosin
{

}
}
);
}
}

A






No exemplo acima, iniciamos importando as classes que sero utilizadas em nosso sistema:
port java.awt.*;
nt.*;
m seguida, declaramos referncias a JTextField para ct1, ct2, ct3 e ct4, ou seja, estas sero

im
import java.awt.eve
import javax.swing.*;

E
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;
mesmo fizemos para senha, que ter sua referncia como sendo um JPasswordField, ou O
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;
s procedimentos seguintes, iro construir as caixas de edio na interface grfica:
super("Caixas de texto");
seu nome");
10 );
Caixa sem edicao",20);
Entre com sua senha");
qui temos uma novidade: quando quisermos que uma caixa de texto no possa ter o seu
bserve tambm que quando declaramos uma String para uma caixa de texto, a mesma

O


Container c = getContentPane();
c.setLayout( new FlowLayout() );
ct2 = new JTextField("Entre com o
c.add( ct2 );
ct1 = new JTextField(
c.add( ct1 );
ct3 = new JTextField("
ct3.setEditable(false);
c.add( ct3 );
ct4 = new JTextField("
c.add( ct4 );

A
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.

O
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:


as ento o correto no seria utilizar etiquetas (Labels) ao invs de caixas de texto no local
titua
s caixas de texto CT2 e CT4 por labels (etiquetas).
ct4 = new JTextField("Entre com sua senha");
c.add( ct4 );

M
de CT2 e CT4, assim o usurio no teria como alterar o seu contedo? Exerccio: Subs
a




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
port java.awt.*;
nt.*;
ublic class cbox extends JFrame {
p2, op3;
box()
per ( "Exemplo de CheckBox" );
em que linguagem?", 19);
w JCheckBox ("Delphi");

w JCheckBox ("VB");
w JCheckBox ("Outros");
ddWindowListener(
) {
ng( WindowEvent e)
stem.exit(0);

etSize (275,100);
tic void main( String args[])
w cbox();
que permite a seleo ou no de seu contedo (se est ou no selecionado). Observe o
exemplo abaixo:

im
import java.awt.eve
import javax.swing.*;

p
private JTextField texto;
private JCheckBox op1, o

public c
{
su
Container c = getContentPane();
c.setLayout(new FlowLayout());
texto = new JTextField("Voc Programa
texto.setFont(new Font("Arial", Font.PLAIN, 12));
c.add(texto);

op1 = ne
c.add (op1);

op2 = ne
c.add (op2);

op3 = ne
c.add (op3);

a
new WindowAdapter(
public void windowClosi
{
Sy
}
}
);

s
show();
}
public sta
{
ne
}
}


Ao executar o sistema acima, teremos o seguinte resultado:



Observe que voc poder marcar uma ou mais linguagens, pois as caixas de seleo, apesar
qui temos uma grande novidade, pois na caixa de texto, especificamos a fonte que seria
texto.setFont(new Font("Arial", Font.PLAIN, 12));
rimeiro especificamos a fonte (arial), em seguida que a mesma seria da forma padro
uando criamos uma caixa de seleo, temos que especificar tambm o rtulo que ir
op1 = new JCheckBox ("Delphi");
s demais procedimentos so aqueles que j conhecemos.
oc poder tambm tratar eventos nas caixas de seleo. Vamos imaginar que, ao
port java.awt.*;
nt.*;
ublic class cbox extends JFrame {
p2, op3;
box()
per ( "Exemplo de CheckBox" );
de estarem dispostas mesma linha e estarem relacionadas a um mesmo assunto, trabalham
de forma independente, uma das outras.

A
utilizada para o texto apresentado no interior da mesma, observe a linha abaixo:



P
(PLAIN), ou seja, sem estar em negrito, itlico, etc... e do tamanho 12.

Q
acompanhar a mesma, caso contrrio o usurio no saber ao certo a opo que est
marcando:



O

V
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:

im
import java.awt.eve
import javax.swing.*;

p
private JTextField texto;
private JCheckBox op1, o

public c
{
su
Container c = getContentPane();
c.setLayout(new FlowLayout());


texto = new JTextField("Voc Programa em que linguagem?", 19);
w JCheckBox ("Delphi");
w JCheckBox ("VB");
w JCheckBox ("Outros");
addWindowListener(
) {
ng( WindowEvent e)
stem.exit(0);

etSize (275,100);
tic void main( String args[])
w cbox();
lass cboxHandler implements ItemListener {
( e.getSource() == op1 )
temEvent.SELECTED )
c programa em

() == op2 )
temEvent.SELECTED )
c programa em
}
texto.setFont(new Font("Arial", Font.PLAIN, 12));
c.add(texto);

op1 = ne
c.add (op1);

op2 = ne
c.add (op2);

op3 = ne
c.add (op3);

cboxHandler handler = new cboxHandler();
op1.addItemListener ( handler );
op2.addItemListener ( handler );


new WindowAdapter(
public void windowClosi
{
Sy
}
}
);

s
show();
}
public sta
{
ne
}

private c
public void itemStateChanged ( ItemEvent e )
{
if
if ( e.getStateChange() == I
JOptionPane.showMessageDialog ( null, "Vo
pascal");

if ( e.getSource
if ( e.getStateChange() == I
JOptionPane.showMessageDialog ( null, "Vo
Basic");



}
}


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

N




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
port java.awt.*;
nt.*;
ublic class combo extends JFrame {
;
,"oracle.gif","macromedia.gif" };
arca[ 0 ] ),
;
per ("Escolha sua favorita");
= new JComboBox ( logomarca );
Changed( ItemEvent e )
bel.setIcon ( simbolo[ empresas.getSelectedIndex() ] );
[ 0 ] );
tic void main( String args[] )
mbo trataevento = new combo();
WindowEvent e )
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:

im
import java.awt.eve
import javax.swing.*;

p
private JComboBox empresas
private JLabel label;
private String logomarca[] =
{ "microsoft.gif","borland.gif"
private Icon simbolo[]=
{ new ImageIcon( logom
new ImageIcon( logomarca[ 1 ] ),
new ImageIcon( logomarca[ 2 ] ),
new ImageIcon( logomarca[ 3 ] ) }

mbo() public co
{
su

c = getContentPane(); Container
c.setLayout ( new FlowLayout() );

empresas
empresas.setMaximumRowCount( 2 );

.addItemListener( empresas
new ItemListener() {
public void itemState
{
la
}
}
);
resas ); c.add( emp
label = new JLabel( simbolo
c.add( label );
setSize( 350,100 );
show();
}

public sta
{
co
trataevento.addWindowListener(
new WindowAdapter() {
public void windowClosing(
{
stem.exit( 0 ); Sy
}
}


);
}
}


O primeiro passo foi instanciar a classe JComboBox no sistema:
private JComboBox empresas;
epois criamos uma array contendo Strings que, alm de oferecer o nome da empresa, iro
private String logomarca[] =
,"oracle.gif","macromedia.gif" };
m seguida estamos lanando cada um dos valores criados para a array logomarca a
private Icon simbolo[]=
arca[ 0 ] ),
;
ma das novidades neste sistema o emprego do mtodo SetMaximumRowCount para
empresas = new JComboBox ( logomarca );
s demais procedimentos j so de seu conhecimento.



D
fornecer o nome do arquivo GIF que ser carregado de acordo com a seleo do usurio:


{ "microsoft.gif","borland.gif"

E
varivel que ser utilizada para carregar a imagem de acordo com a empresa selecionada:


{ new ImageIcon( logom
new ImageIcon( logomarca[ 1 ] ),
new ImageIcon( logomarca[ 2 ] ),
new ImageIcon( logomarca[ 3 ] ) }

U
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.setMaximumRowCount( 2 );

O

Potrebbero piacerti anche