7/23/2019 Apostila de JAVAApostila de Java Grupo PET
1/61
Apostila de JAVAApostila de Java Grupo PET - Informtica
Sumrio
1. Introduo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "#
1.1. $ %ue & JAVA' !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "#
1.(. $ %ue & uma Applet !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "#
1.#. $ %ue & uma Aplicao !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "#
1.). $ %ue & o Appletvie*er !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "#
1.+. $ %ue & Applet no ,,, !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "#
1.. riando uma Aplicao !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ")
1./. riando uma Applet !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ")
(. $ 0sico !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "
(.1 Variveis e tipos de dados !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "
(.(. omentrios !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "
(.#. aracteres Especiais !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "/
(.). Epress2es e $peradores !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "/
(.+. ompara2es !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "3
#. Arra4s5 6oops e ondicionais !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1"
#.1. Arra4s !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1"
#.(. ondicionais !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 11
#.#. $perador ondicional !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1(
#.). S*itc7 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1(
#.+. 6oop 8or !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1#
#.. 6oop ,7ile !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1#
#./. 6oop 9o !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1#
). riando lasses e Aplica2es em Java !!!!!!!!!!!!!!!!!!!!!!!!!!! 1)
).1. 9e:nindo lasses !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1)
).(. 9e:nindo Variveis de Inst;ncia !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1)
).#. onstantes !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1)
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
2/61
).). Variveis de lasse !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1)
).+. 9e:nio de Hetos desenvolvidapela Sun
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
3/61
Esta porta>ilidade & o>tida pelo fato da lin=ua=em ser interpretada5 ou seHa5o compilador =era um
cdi=o independente de m%uina c7amado >4te-code. Do momento daeecuo este >4te-code &
interpretado por uma m%uina virtual instalado na m%uina. Para portarJava para uma ar%uitetura
7ad*areKs especL:ca5 >asta instalar a m%uina virtual MinterpretadorN. Al&mde ser inte=rada O
Internet5 Java tam>&m & uma ecelente lin=ua=em para desenvolvimento deaplica2es em =eral. 9
suporte ao desenvolvimento de soft*are em lar=a escala.
1.(. $ %ue & uma APP6ET'
Applet & um pro=rama especial escrito em Java adaptado para instalao eeecuo dentro
de p=inas Tro*ser.
1.#. $ %ue & uma AP6IAF$'
Aplicao & um pro=rama mais =eral escrito na lin=ua=em Java. Do re%uerum >ro*ser
para sua eecuo. 9e fato5 Java pode ser usada para criar todo tipo deaplica2es %ue usualmente
vocC implementa com outras lin=ua=ens mais convencionais.
1.). $ %ue & o APP6ETVIE,EB'
Quem criou o Java espera %ue todos os >ro*sers al=um dia suportem asapplets5 o %ue no
acontece ainda. Para facilitar o desenvolvimento de aplica2es5 foi criado o
Appletvie*er %ue
mostra apenas a rea onde & eecutada applet. 9epois de testar >em seucdi=o com o
Appletvie*er5 vocC deve ento test-lo com al=uns >ro*sers %ue suportemJava para ver o efeito
:nal.
1.+. $ %ue & APP6ET no ,,,
As applets so disparadas %uando se carre=a uma p=ina T
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
4/61
de cdi=o Tasta di=itar o comandoWHavac ello,orld.Hava
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
5/61
Este comando vai =erar o ar%uivo ello,orld.class5 %ue & o >4te-code daaplicao. Para
eecutar o >4te-code >asta di=itar o comandoW
Hava ello,orld
1./. riando uma APP6ET
riar uma applet & diferente de criar uma simples aplicao por%ue umaapplet & eecutada
e visualiada dentro de uma p=ina Tlic class ello,orldApplet etends Hava.applet.Applet Z
pu>lic void paint MGrap7ics =N Z
=.dra*Strin= MXello ,orldY5+5(+N]
^
^Apostila de Java Grupo PET - Informtica
P=ina +
1./.(. ompilando a applet
Para compilar a applet5 >asta di=itar o comandoW
Havac ello,orldApplet.Hava
Este comando vai =erar o ar%uivo ello,orldApplet.class5 %ue & o >4te-code da applet.
Para eecutar o >4te-code & necessrio 7aver uma p=ina T
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
6/61
RKEA9
R0$9
RAPP6ET $9EUello,orldApplet.class ,I9TU#"" EIGTU1""
RKAPP6ET
RK0$9
RKTro*ser
%ue suporte Hava ou do appletvie*er utiliando-se do comando a se=uirW
appletvie*er eemplo1.7tmlApostila de Java Grupo PET - Informtica
P=ina
(. $ 0_SI$
(.1. Variveis e tipos de dados
Variveis so aloca2es de memria nas %uais podemos =uardar dados. ElastCm um nome5
tipo e valor. Toda ve %ue necessite usar de uma varivel vocC precisadeclar-la e s ento poder
atri>uir valores a mesma.
(.1.1. 9eclarando variveis
As declara2es de variveis consistem de um tipo e um nome de varivelWcomo se=ue o
eemploW
int idade]
Strin= nome]
>oolean eiste]
$s nomes de variveis podem comear com uma letra5 um su>lin7ado M ! N5ou um cifro
M`N. Elas no podem comear com um nmero. 9epois do primeiro caracterpode-se colocar
%ual%uer letra ou nmero.
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
7/61
(.1.(. Tipos de variveis
Toda varivel deve possuir um tipo. $s tipos %ue uma varivel pode assumiruma das trCs
Xcoisas a se=uirW
b ma das oito primitivas >sicas de tipos de dados
b $ nome de uma classe ou interface
b m Arra4
Veremos mais so>re o uso de arra4s e classes mais a frente.
$s oito tipos de dados >sicos soW inteiros5 nmeros de ponto-utuante5caracteres e >ooleanos
Mverdadeiro ou falsoN.
Tipos InteirosW
Tipo Taman7o Alcance
>4te 3 >its -1(3 at& 1(/
s7ort 1 >its -#(./3 at& #(.//
int #( >its -(.1)/.)3#.)3 at& (.1)/.)3#.)/
lon= ) >its -?((##/("#3+)//+3"3 at& ?((##/("#3+)//+3"/
Eistem dois tipos de nmeros de ponto-utuanteW oat M #( >its5 precisosimplesN e dou>le
M) >its5 preciso duplaN.
(.1.#. Atri>ui2es a variveis
Aps declarada uma varivel a atri>uio & feita simplesmente usando ooperador UW
idade U 13]
eiste U true]
(.(. omentrios
Java possui trCs tipos de comentrio5 o K e K como no e . Tudo %ueestiver entre os
dois delimitadores so i=noradosWApostila de Java Grupo PET - Informtica
P=ina /
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
8/61
K Este comentrio :car visLvel somente no cdi=o o compilador i=norar
completamente este trec7o entre os delimitadores
K
9uas >arras MKKN tam>&m podem ser usadas para se comentar uma lin7aW
int idade] KK este comando declara a varivel idade
E :nalmente os comentrios podem comear tam>&m com K e terminarcom K. Este
comentrio & especial e & usado pelo Havadoc e para =erar umadocumentao API do cdi=o. Para
aprender mais so>re o Havadoc acesse a 7ome pa=e
M7ttpWKK***.Havasoft.comN.(.#. aracteres especiais
aracter Si=ni:cado
gn Dova 6in7a
gt Ta>
g> 0ac@space
gr Betorno do arrogf X8ormfeed Mavana p=ina na impressoraN
gg 0arra invertida
g Apstrofe
g Aspas
gddd $ctal
gdd eadecimal(.). Epress2es e operadores
(.).1. $peradores Aritm&ticos
$perador Si=ni:cado Eemplo
soma # )
- su>trao + - /
multiplicao + +K diviso 1) K /
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
9/61
h mdulo (" h /
Eemplo Aritm&ticoW
class Arit7meticTest Z
pu>lic static void main M Strin=s ar=s[\ N Z
s7ort U ]
int 4 U )]
oat a U 1(.+f]
oat > U /f]
S4stem.out.println M X & X X5 4 & X 4 N]
S4stem.out.println M X 4 U X M 4N N]
S4stem.out.println M X - 4 U X M - 4N N]
S4stem.out.println M X K 4 U X M K 4N N]
S4stem.out.println M X h 4 U X M h 4 N N]Apostila de Java Grupo PET -Informtica
P=ina 3
S4stem.out.println M Xa & X a X5 > & X > N]
S4stem.out.println M X a K > U X M a K > N N]
^
^Apostila de Java Grupo PET - Informtica
P=ina ?
A saLda do pro=rama acima & W
& 5 4 & )
4 U 1"
- 4 U (
K 4 U 1
h 4 U (
a & 1(.+5 > & /
a K > U 1./3+/1
(.).(. re atri>ui2es
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
10/61
Variveis podem atri>uidas em forma de epress2es comoW
int 5 45 ]
U 4 U U "]
Do eemplo as trCs variveis rece>em o valor "]
$peradores de Atri>uioW
Epresso Si=ni:cado
U 4 U 4
-U 4 U - 4
U 4 U 4
KU 4 U K 4
(.).#. Incrementos e decrementos
omo no e no o Java tam>&m possui incrementadores edecrementadores W
4 U ]
4 U --]
As duas epress2es do resultados diferentes5 pois eiste uma diferenaentre pre:o e
su:o. Quando se usa os operadores M ou - - N5 4 rece>e o valor de antes de ser
incrementado5 e usando o pre:o M ou N acontece o contrario5 4rece>e o valor incrementado
de .
(.+. ompara2es
Java possui vrias epress2es para testar i=ualdade e ma=nitude. Todas asepress2es
retornam um valor >ooleano Mtrue ou falseN.
(.+.1. $peradores de comparao
$perador Si=ni:cado Eemplo
UU I=ual UU #
YU 9iferente M Do i=ualN YU #
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
11/61
R
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
12/61
Java so o>Hetos %ue podem ser passados e acoplados a outros o>Hetos.
Arra4s podem conter %ual%uer tipo de elemento valoradoMtipos primitivos ou
o>HetosN5 mas vocC no pode armaenar diferente tipos em um simplesarra4.
$u seHa5 vocC pode ter um arra4 de inteiros5 ou um arra4 de strin=s5 ou umarra4
de arra45 mas vocC no pode ter um arra4 %ue conten7a am>os os o>Hetosstrin=s e
inteiros.
A restrio acima descrita si=ni:ca %ue os arra4s implementados em Java
so =en&ricos 7omo=Cneos5 ou seHa5 um nico arra4 pode armaenar%ual%uer tipo
de o>Heto com a restrio %ue todos seHam do mesma classe.
#.1.1. 9eclarando um Arra4W
Strin= dicult[\]
Point 7its[\]
int temp[\]
$utra alternativa de declaraoW
Strin=[\ dicult]
Point[\ 7its]
int[\ temp]
#.1.(. riando $>Hetos Arra4sW
m dos camin7os & usar o operador ne* para criar uma nova inst;ncia de
um arra45 por
eemploW
int[\ temps U ne* int[??\]
Quando voce cria um o>Heto arra4 usando o operador ne*5 todos os Lndicesso
inicialiados para vocC M " para arra4s num&ricos5 falso para >oolean5 g"para caracteres5 e D66
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
13/61
para o>HetosN. VocC tam>&m pode criar e inicialiar um arra4 ao mesmotempo.
Strin=[\ c7iles U Z XHalapeno5 Xana7eim5 Xserrano 5 XHum>ou5
Xt7ai^]
ada um dos elementos internos deve ser do mesmo tipo e deve sertam>&m do mesmo tipo
%ue a varivel %ue armaena o arra4. $ eemplo acima cria um arra4 deStrin=s c7amado c7iles
%ue cont&m + elementos.Apostila de Java Grupo PET - Informtica
P=ina 1(
#.1.#. Acessando os Elementos do Arra4ma ve %ue vocC tCm um arra4 com valores iniciais5 vocC pode testar emudar os valores
em cada Lndice de cada arra4.
$s arra4s em Java sempre iniciam-se na posio " como no . PoreemploW
Strin=[\ arrU ne* Strin=[1"\]
arr[1"\Uout]
Isto provoca um erro de compilao pois o Lndice 1" no eiste5 pois istoest fora das
>ordas do arra4.
arr[?\ U Xinside]
Esta operao de atri>uio & vlida e insere na posio ? do arra45 a strin=Xinside.
#.1.). Arra4s
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
14/61
$ condicional cont&m a palavra c7ave if5 se=uido por um teste >ooleano.m opcional else
como palavra c7ave pode ser eecutado na caso do teste ser falso5EemploW
if M R 4N
S4stem.out.printlnMX e menor do %ue 4N]
else
S4stem.out.printlnMX 4 e maiorN]
Dota t&cnicaW A diferena entre o if em Java e ou & %ue o teste deveretornar um
valor >ooleanoMtrue ou falseN.#.(.1. 0loco
m >loco & de:nido por MZ^N e cont&m um =rupo de outros >locos. Quandoum novo >loco
& criado um novo escopo local & a>erto e permite a de:nio de variveislocais. As variveis
de:nidas dentro de um >loco s podem ser vistas internamente a este5 eso terminadas ou etintas
no :nal da eecuo desteM^N.Apostila de Java Grupo PET - Informtica
P=ina 1#
void test>loc@MNZ
int U 1"5 *U1]
if M *N
Z KK inicio do >loco
int 4U+"]
S4stem.out.printlnMXdentro do >locoN]
S4stem.out.printlnMXW N]
S4stem.out.printlnMX4W 4N]
^ KK :nal do >loco
S4stem.out.printlnMX*W *N]
S4stem.out.printlnMX4W 4N] KK erro varivel no con7ecida
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
15/61
^
#.#. $ operador ondicional
ma alternativa para o uso do if e else & um operador ternrio condicional.Este operador
ternrio M'W N 5 & c7amado assim por%ue tem trCs termos como par;metro.
EemploW
test ' trueresult W falseresult
int menor U R 4 ' W 4 ] KK A varivel menor rece>e o valor do menor
entre e 4.
#.). $ s*itc7
m comum mecanismo para su>stituio de ifs %ue pode ser usado para um=rupo de testes
e a2es Hunto a um simples a=rupamento5 c7ama-se s*itc7.
s*itc7 MtesteNZ
case valorum]
resultum]
>rea@]
case valordois]
resultdois]
>rea@]
case valortresW
resulttres]
>rea@]
defaultW defaultresult]
^
$ valor & comparado com cada um dos casos relacionados. Se acom>inao no for
encontrada5 o >loco default eecutado. $ default & opcional5 ento casoeste no esteHa
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
16/61
associado ao comando5 o >loco do s*ict7 sem eecutar nada.Apostila deJava Grupo PET - Informtica
P=ina 1)
#.+. 6oopin= 8or
$ loop em Java tem esta sintaeW
forMinicialiao] teste] incrementoN Z
>loco de comandos]
^
VocC tam>&m pode incluir um comando simples5 sendo assim no 7necessidade da
utiliao de c7aves. EemploW
Strin= strArra4[\ U ne* Strin=[1"\]
for M iU"] iR strArra4.len=t7] iN
strArra4[i\U]
Inicialia um arra4 de1" elementos com X]
#.. 6oop ,7ile
$ *7ile & usado para repetir um comando5 ou um conHunto de comandoen%uanto a
condio & verdadeira.
,7ile McondioNZ
>loco de comandos]
^
A condio & uma epresso >ooleana. EemploWint countU"]
*7ileM count R arra41.len=t7 jj arra41[count\YU"NZ
arra4([count\UMoatN arra41[count\]
^
#./. 6oop 9o
A principal diferena entre o *7ile e o do & %ue o teste condicional no casodo *7ile & feita
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
17/61
antes de se eecutar o cdi=o interno ao loop. 9esta forma5 o %ue podeacontecer no *7ile & %ue
o loop pode no ser eecutado se a condio for false. J no loop do o corpodo loop & eecutado
pelo menos uma ve5 pois o teste de permanCncia & eecutado no :m doloop.
doZ
>od4$f6oop]
^ *7ileMconditionN]Apostila de Java Grupo PET - Informtica
P=ina 1+
). riando lasses e Aplica2es em Java).1. 9e:nindo lasses
Para de:nir uma classe use a palavra c7ave class e o nome da classe.EemploW
class classe de outra classe5 use etends para indicar asuperclasse.
EemploW
class
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
18/61
int correia]
int pedal]
^
).#. onstantes
Para declarar uma constante5 use a palavra c7ave :nal antes dadeclarao da varivel e
inclua um valor inicial para esta varivel. EemploW
:nal oat piU).1)1+?(]
:nal >oolean de>u=Ufalse]
:nal int masie U )""""]
).). Variveis de lasse
As variveis de classe so >oas para a comunicao entre os diferenteso>Hetos da mesma
classe5 ou para manter travamento de estados =lo>ais so>re um conHunto deo>Hetos. EemploW
static int soma]
static :nal int ma$>HectsU 1"]Apostila de Java Grupo PET - InformticaP=ina 1
).+. 9e:nio de sicasW
b $ nome do m&todo]
b $ tipo o>Heto ou tipo primitivo de retorno]
b ma lista de par;metros]b $ corpo do m&todo]
A de:nio >sica de um m&todo tem esta aparCnciaW
tipoderetorno nomedometodoMtipo1 ar=15 tipo( ar=(5 ...NZ
....
^
EemploWint[\ ma@eBan=eMint lo*er5 int upperN Z ... ^
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
19/61
A Ban=elass classeW
class Ban=elassZ
int[\ ma@eBan=eMint lo*er5 int upperNZ
int arr[\ U ne* int[ Mupper - lo*erN 1\]
for Mint iU"] iRarr.len=t7]iN
arr[i\Ulo*er]
return arr]
^
pu>lic static void mainMStrin= ar=[\NZ
int t7eArra4[\]
Ban=elass t7eBan=eUne* Ban=elassMN]
t7eArra4U t7eBan=e.ma@eBan=eM151"N]
S4stem.out.printMXT7e arra4W [ X N]
for M int iU"] i R t7eArra4.len=t7] iN
S4stem.out.printMt7eArra4[i\ X XN]
S4stem.out.printlnMX\N]
^
^
A saLda do pro=rama & W
T7e arra4W [ 1 ( # ) + / 3 ? 1" \Apostila de Java Grupo PET - Informtica
P=ina 1/
).. A palavra c7ave t7is
Do corpo de uma de:nio de m&todo5 vocC pode %uerer referir-se ao o>Hetocorrente-o
o>Heto %ue o m&todo foi c7amado - para referir-se Os variveis de inst;nciaou para passar o o>Heto
corrente como um ar=umento para um outro m&todo. Para este tipo dereferCncia5 vocC pode usar a
palavra c7ave t7is.class Pessoa Z
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
20/61
Strin= nome]
int idade]
Pessoa M Strin= nome5 int idade N Z
t7is.nome U nome]
t7is.idade U idade]
^
pu>lic void imprime9ados MN Z
S4stem.out.print M XDomeW X t7is.nome X IdadeW X t7is.idadeN]
^
^
)./.Passando ar=umentos para
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
21/61
forM int iU"] i R arr.len=t7] iNZ
S4stem.out.printMarr[i\ X XN]
^
S4stem.out.printlnMX\N]
num$nesU test.onetoeroMarrN]
S4stem.out.printlnMXDum>er of $nes U X num$nesN]
S4stem.out.printMXDe* values of t7e arra4W [ XN]
forM int iU"] i R arr.len=t7] iNZ
S4stem.out.printMarr[i\ X XN]
^
S4stem.out.printlnMX\N]Apostila de Java Grupo PET - Informtica
P=ina 13
^
As saLdas deste pro=ramaW
Values of t7e arra4W [ 1 # ) + 1 1 / \
Dum>er of $nes U #
De* values of t7e Arra4W [ " # ) + " " /\Apostila de Java Grupo PET -Informtica
P=ina 1?
+. recarre=ados5 ou seHa5 podem-se criarm&todos com o
mesmo nome5 mas com diferentes assinaturas Mpar;metrosN e diferentesde:ni2es. Quando se
c7ama um m&todo em um o>Heto5 o Java casa o nome do m&todo5 o nmerode ar=umentos e o tipo
dos ar=umentos e escol7e %ual a de:nio do m&todo a eecutar.
Para criar um m&todo so>recarre=ado5 & necessrio criar diferentes
de:ni2es de m&todos na sua
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
22/61
classe5 todos com o mesmo nome5 mas com diferentes par;metros Mnmerode ar=umentos ou
tiposN.
Do eemplo a se=uir veremos a de:nio da classe Betan=ulo5 a %ual de:neum ret;n=ulo
plano. A classe Betan=ulo tCm %uatro variveis para instanciar5 as %uaisde:nem o canto superior
es%uerdo e o canto inferior direito do ret;n=uloW 15 415 ( e 4(.
class Betan=ulo Z
int 1 U "]
int 41 U "]int ( U "]
int 4( U "]
^
Quando uma nova inst;ncia da classe Betan=ulo for criada5 todos as suasvariveis so
inicialiadas com ". 9e:nindo um m&todo construaBetan= MNW este m&todo
rece>e %uatro inteiros e
fa um Xresie do ret;n=ulo de acordo com as novas coordenadas e retornao o>Heto ret;n=ulo
resultante M note %ue os ar=umentos possuem o mesmo nome das variveisinstanciveis5 portanto
deve-se usar o t7is para referenci-las NW
Betan=ulo construaBetan= M int 15 int 415 int (5 int 4( N Z
t7is.1 U 1]
t7is.41 U 41]
t7is.( U (]
t7is.4( U 4(]
return t7is]
^
Querendo-se de:nir as dimens2es do ret;n=ulo de outra forma5 por eemplopode-se usar o
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
23/61
o>Heto Point ao inv&s de coordenadas individuais. 8aremos a so>recar=a dom&todo construaBetan=
MN5 passando a=ora como par;metro dois o>Hetos PointW
Betan=ulo construaBetan= MPoint superiorEs%uerdo5 Point inferior9ireitoN Z
1 U superiorEs%uerdo.]
41 U superiorEs%uerdo.4]
( U inferior9ireito.]
4( U inferior9ireito.4]
return t7is]
^Apostila de Java Grupo PET - Informtica
P=ina ("
Por&m %uerendo-se de:nir um ret;n=ulo usando somente o canto superiores%uerdo e uma
lar=ura e altura do ret;n=ulo pode-se ainda de:nir mais um m&todoconstruaBetan= MNWApostila de Java Grupo PET - Informtica
P=ina (1
Betan=ulo construaBetan= MPoint superiorEs%uerdo5 int lar=ura5 int alturaNZ
1 U superiorEs%uerdo.]
41 U superiorEs%uerdo.4]
( U M1 lar=uraN]
4( U M41 alturaN]
return t7is]^
Para :naliar o eemplo mostra-se a se=uir um m&todo para imprimir ascoordenadas do
ret;n=ulo e um main para faer o testeW
import Hava.a*t.Point]
class Betan=ulo Z
int 1 U "]
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
24/61
int 41 U "]
int ( U "]
int 4( U "]
Betan=ulo construaBetan= M int 15 int 415 int (5 int 4( N Z
t7is.1 U 1]
t7is.41 U 41]
t7is.( U (]
t7is.4( U 4(]
return t7is]
^
Betan=ulo construaBetan= MPoint superiorEs%uerdo5 Point inferior9ireitoN Z
1 U superiorEs%uerdo.]
41 U superiorEs%uerdo.4]
( U inferior9ireito.]
4( U inferior9ireito.4]
return t7is]
^
Betan=ulo construaBetan= MPoint superiorEs%uerdo5 int lar=ura5 int alturaN
Z
1 U superiorEs%uerdo.]
41 U superiorEs%uerdo.4]
( U M1 lar=uraN]
4( U M41 alturaN]
return t7is]
^
void imprimaBetan=ulo MN Z
S4stem.out.print M XBet;n=uloW R X 1 X5 X 41 N]
S4stem.out.println M X5 X ( X5 X 4( XN]
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
25/61
^
pu>lic static void main M Strin= ar=s[\ N Z
Betan=ulo retan= U ne* Betan=uloMN]Apostila de Java Grupo PET -Informtica
P=ina ((
S4stem.out.println M X7amando construaBetan= com coordenadas (+5 (+5
+"5 +" W N]
retan=.construaBetan= M (+5 (+5 +"5 +" N]
retan=.imprimaBetan=ulo MN]
S4stem.out.println M X--------------------------------------------XN]
S4stem.out.println M X7amando construaBetan= com os pontos M1"5 1"N
5 M("5 ("N W N]
retan=.construaBetan= M ne* Point M1"51"N 5 ne* Point M("5 ("N N]
retan=.imprimaBetan=ulo MN]
S4stem.out.println M X--------------------------------------------XN]
S4stem.out.println M X7amando construaBetan= com os pontos M1"5 1"N
5 lar=ura M+"N e altura M+"N W N]
retan=.construaBetan= M ne* Point M1"51"N 5 +"5 +"N]
retan=.imprimaBetan=ulo MN]
S4stem.out.println M X--------------------------------------------XN]
^
^
+.(. Heto &
inicialiado %uando ele & criado.
9iferente dos m&todos normais um m&todo construtor no pode serc7amado diretamente]
ao inv&s disto os m&todos construtores so c7amados automaticamentepelo Java. Do momento em
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
26/61
%ue o o>Heto & instanciado5 ou seHa %uando se usa ne* o Java fa trCscoisasW
b Aloca memria para o o>Heto
b Inicialia as variveis da%uela inst;ncia do o>Heto
b 7ama o m&todo construtor da classe
+.(.1. onstrutores 0sicos
$s construtores parecem muito com os m&todos normais5 com duasdiferenas >sicasW
b onstrutores sempre tCm o mesmo nome da classe
b onstrutores no podem ter tipo de retorno
EemploW
class Pessoa Z
Strin= nome]
int idade]
Pessoa MStrin= n5 int iN Z
nome U n]
idade U i]
^
void printPessoa MN Z
S4stem.out.print MX$i meu nome & W nomeN]
S4stem.out.println MX. Eu ten7o W Xidade X anosN]Apostila de Java GrupoPET - Informtica
P=ina (#^
pu>lic static void main M Strin= ar=s[\ N Z
Pessoa p]
p U ne* Pessoa M X
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
27/61
+.(.(. Polimor:smo de onstrutores
I=ual aos m&todos normais os construtores tam>&m podem ter nmerosvariveis de tipos e
par;metros. Por eemplo os m&todos construaBetan= MN de:nidos na classeBetan=ulo seriam
ecelentes construtores para a mesma classe5 pois eles esto Hustamenteinstanciando as variveis.
Se=ue o eemplo a>aio com as devidas altera2es W
import Hava.a*t.Point]
class Betan=ulo Z
int 1 U "]int 41 U "]
int ( U "]
int 4( U "]
Betan=ulo M int 15 int 415 int (5 int 4( N Z
t7is.1 U 1]
t7is.41 U 41]t7is.( U (]
t7is.4( U 4(]
^
Betan=ulo MPoint superiorEs%uerdo5 Point inferior9ireitoN Z
1 U superiorEs%uerdo.]
41 U superiorEs%uerdo.4]( U inferior9ireito.]
4( U inferior9ireito.4]
^
Betan=ulo MPoint superiorEs%uerdo5 int lar=ura5 int alturaN Z
1 U superiorEs%uerdo.]
41 U superiorEs%uerdo.4]( U M1 lar=uraN]
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
28/61
4( U M41 alturaN]
^
void imprimaBetan=ulo MN Z
S4stem.out.print M XBet;n=uloW R X 1 X5 X 41 N]
S4stem.out.println M X5 X ( X5 X 4( XN]
^
pu>lic static void main M Strin= ar=s[\ N Z
Betan=ulo retan=]
S4stem.out.println M XBetan=ulo com coordenadas (+5 (+5 +"5 +" W N]
retan= U ne* Betan=ulo M(+5 (+5 +"5 +" N]
retan=.imprimaBetan=ulo MN]
S4stem.out.println M X--------------------------------------------XN]Apostila de JavaGrupo PET - Informtica
P=ina ()
S4stem.out.println M XBetan=ulo com os pontos M1"5 1"N 5 M("5 ("N W
N]
retan= U ne* Betan=ulo M ne* Point M1"51"N 5 ne* Point M("5 ("N N]
retan=.imprimaBetan=ulo MN]
S4stem.out.println M X--------------------------------------------XN]
S4stem.out.println M XBetan=ulo com os pontos M1"5 1"N 5 lar=ura
M+"N e altura M+"N W N]
retan= U ne* Betan=ulo M ne* Point M1"51"N 5 +"5 +"N]
retan=.imprimaBetan=ulo MN]
S4stem.out.println M X--------------------------------------------XN]
^
^Apostila de Java Grupo PET - Informtica
P=ina (+
+.#.
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
29/61
$s m&todos destrutores so c7amados lo=o antes do Xcoletor de liopassar e sua
memria se li>erada. $ m&todos destrutor & c7amado de :nalieMN a classe$>Hect de:ne um
m&todo destrutor padro5 %ue no fa nada. Para criar um m&todo destrutorpara suas prprias
classes >asta so>repor o m&todo :nalie MN com o se=uinte ca>eal7oW
protected void :nalie MN Z
...
^
9entro do m&todo :nalie vocC pode colocar tudo %ue vocC precisa faerpara a limpea do
seu o>Heto.Apostila de Java Grupo PET - Informtica
P=ina (
. ,ID9$, T$$6qIT
As ferramentas de controle de Hanelas do Hava tam>&m con7ecidas por A,TMA>stract
,indo* Tool@itN so uns dos pontos fortes do Hava. Estas ferramentasfornecem toda a
funcionalidade %ue se podia esperar de um sistema moderno de Hanelas. $A,T contem os mais
usados componentes das interfaces =r:cas atuais portanto 7a>ilita aaplicao a ser eecutada em
sistemas =r:cos completamente diferentes.
Deste capitulo apresentaremos os se=uintes componentesW 0uttom5 anvas57ec@>o5
ontainer5 6a>el5 6ist5 Scroll>ar e Tetomponent. omentendimento destes
componentes & necessrio primeiro ter uma >ase so>re manuseio deeventos.
.1. Eventos
m evento & uma comunicao do mundo eterno para o pro=rama %ue
al=uma coisa
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
30/61
aconteceu. Podemos citar como eemplos o cli%ue ou ainda o movimento domouse. ma das mais
importantes coisas a se entender so>re o A,T & como & feito omanuseioKtratamento destes
eventos. Sem eventos sua aplicao no poderia responder as a2es dousurio.
Eemplo 1W
import Hava.a*t.]
import Hava.applet.Applet]
pu>lic class e+!1 etends Applet Z
0utton >oto]pu>lic void initMN Z
>oto U ne* 0uttonMli%ue A%uiYN]
addM>otoN]
^
pu>lic >oolean action MEvent evt5 $>Hect al=umN Z
if Mevt.tar=et UU >otoN Z>oto.set6a>elM$qYYN]
return true]
^
else
return false]
^^
Quando um componente %ue tem a ele uma ao associada & manipuladopelo usurio5 o
m&todo actionMN da%uele componente & c7amado. Deste caso nos estamosusando um >oto ao
inv&s de usar uma su>classe de nossa autoria. $ tratador de eventos tentatratar o evento dentro da
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
31/61
classe >oto5 mas como ele no ac7a o tratador %ue iria manusear o eventoele passa o evento para
cima para o container %ue contem o componente e assim por diante at& %ueal=u&m trate o evento.
Vamos dar uma ol7ada de perto no m&todo actionMNW
pu>lic >oolean actionMEvent evt5 $>Hect al=umN ZApostila de Java Grupo PET- Informtica
P=ina (/
Todos tratadores de eventos tem uma forma similar a esta. Eles aceitam umpar;metro do
tipo Event %ue prove informao detal7ada so>re o evento. Se=undo eles
retornam um valor
0oolean indicando True se o evento foi tratado5 ou 8alse caso contrario.
if Mevt.tar=et UU >otoN Z
A%ui o alvo do evento & e c7ecado para se sa>er se & ou no o >oto.Por%ue evt.tar=et e
>oto so am>os o>Hetos5 nos podemos c7ecar se am>os so o mesmoo>Heto.
>oto.set6a>elM$qYYN]
J %ue o >oto foi pressionado vamos mudar o seu titulo.
return true]
^
else
return false]
8inalmente5 se o evento foi tratado & retornado true5 caso contrrio &retornado false.
.1.1. Tratamento de Eventos em 9etal7e
Em %uase todos os casos podemos usar os m&todos tratadores de eventos%ue so
fornecidos na lin=ua=em Java. Estes esto na ta>ela a>aio. re-se%ue tudo & relativo ao
componente. Por eemplo5 o m&todo mouse
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
32/61
mouse & movido dentro da%uele componente.
Eventos do Java
TIP$ Hect al=umN
0oto do mouse pressionado mouse9o*nMEvent evt5 int 5 int 4N
0oto do mouse li>erado mousepMEvent evt5 int 5 int 4N
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
33/61
pu>lic >oolean mouseEnterMEvent evt5 int 5 int 4N Z
>oto.set6a>elMVa Em>ora YYN]
return true]
^
pu>lic >oolean mouseEitMEvent evt5 int 5 int 4N Z
>oto.set6a>elM8i%ue 6on=e YYN]
return true]
^
pu>lic >oolean action MEvent evt5 $>Hect al=umN Z
if Mevt.tar=et UU >otoN Z
>oto.set6a>elM$qN]
return true]
^
else
return false]
^
^
A=ora por aonde %ue o usurio mova o mouse na applet5 o mesmo &insti=ado a no clicar
no >oto. Antes5 o >oto era usado de uma maneira completamente normal5a=ora nos mudamos
seu comportamentoKfuncionalidade.
.1.(. 7andleEventMN ou actionMN
Geralmente5 uma com>inao do m&todo actionMN com outros pr&-construidos tratadores de
eventos tra>al7aro >em. Para a%uelas vees %ue vocC necessita tomar umcontrole completo
7andleEventMN & usado.
$ m&todo 7andleEventMN tem vanta=ens e desvanta=ens. Do lado positivo5
vocC & %uem tem
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
34/61
o completo controle. E no lado ne=ativo5 vocC & %uem tem o completocontrole. Isto si=ni:ca %ue
vocC deve ter muito cuidado %uando esta montando um 7andleEventMN ousua aplicao pode
comear :car confusa e c7eia de
>u=s muito rapidamente. Eemplo #W
W
pu>lic >oolean mouseEnter MEvent evt5 int 5 int 4N Z
setTetMSai foraYYN]
^
pu>lic >oolean 7andleEvent MEvent evtN Z
if Mevt.id UU qE!PBESSN Z
setTetMPressionadoN]
return true]
^
else
return false]
^
W
Eventos do A,TApostila de Java Grupo PET - Informtica
P=ina (?
TIP$
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
35/61
Tecla pressionada qE!PBESS
Tecla li>erada qE!BE6EASE
.1.#. riando Eventos
$casionalmente o pro=rama tem %ue criar seus prprios eventos. Pode at&parecer
estran7o5 mas as vees o pro=rama :ca muito mais simples.
m simples evento pode ser criado assimW
Event evt U ne* EventMo>H!alvo5 id5 ar=N]
Aonde o>H!alvo & o o>Heto para o %ual o evento deve ser mandado5 id & uminteiro %ue
representa o tipo do evento Mpode-se usar as constantes acimaN e ar= & umar=umento para ser
incluLdo no evento se 7a al=uma informao etra %ue vocC =ostaria %ue otratador de eventos
rece>esse. Dormalmente a de:nio de um evento & feita como o eemploa>aioW
Eemplo )W
W
W
pu>lic >oolean @e49o*nMEvent evt5 int @e4N Z
if M@e4 UU )?N Z
deliverEventMne* EventMoneqe45 Event.
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
36/61
Quando um tet :eld & selecionado5 o usurio pode di=itar no campo deteto.
Quando um componente rece>e o foco5 o m&todo =et8ocusMN docomponente & c7amadoW
pu>lic >oolean =et8ocusMEvent evt5 $>Hect *7atN Z
...
^
Quando um componente perde o foco5 o m&todo lost8ocusMN do componente& c7amadoW
pu>lic >oolean lost8ocusMEvent evt5 $>Hect *7atN Z
...^
comum em um pro=rama a necessidade de manter o foco emdeterminado componente.
Por eemplo se um tet :eld para mostrar dados e no para rece>er dados5vocC provavelmente Apostila de Java Grupo PET - Informtica
P=ina #"
no %uer %ue o tet :eld esteHa apto a rece>er o foco. Para este caso eisteo m&todo
re%uest8ocusMNW
pu>lic void re%uest8ocusMN Z
...
^
Isto pode ser colocado em um componente %ue contem o tet :eld para %ueeste
componente :%ue com o foco.Apostila de Java Grupo PET - Informtica
P=ina #1
.(. omponentes A,T
Antes de comearmos & >om sa>ermos %ueW
1. Todos os componentes tem uma posio e taman7o
(. Todos os componentes tem uma cor e uma cor de fundo
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
37/61
#. omponentes podem ser 7a>ilitados ou desa>ilitados
). Eiste uma interface standard para os componentes tratarem eventos
omponentes A,T podem ser divididos em trCs partesW
b omponentes da Interface
omponentes da Interface a>ran=em todos os *id=ets e controlesassociados a uma
interface =r:ca. Eemplos destes componentes soW >uttons5 tet la>els5scroll>ars5 pic@
list e campos tet-entr4.
b ontainers
ontainers a>ran=em reas nas %uais os componentes da interface podemser postos. Isto
7a>ilita os componentes a serem a=rupados e formarem um o>Heto maiscoeso e fcil de
ser manipulado. m Panel & um eemplo deste tipo de componente.
b ,indo*s
,indo*s so um tipo muito especial da classe omponent. Todos os outros
componentes
so adicionados dentro de uma *indo*. Dormalmente %uando se pro=ramaapplets5
*indo*s no so usadas.
.(.1. omponentes da Interface
0TT$D
0oto. Pode ser customiado para ter um teto ou ainda ser >ranco.
onstrutoresW
0uttonMN cria um >oto sem la>el
0uttonMStrin= eti%N ria um 0utton com la>el i=ual ao contedo de eti%
elMN retorna o la>elMeti%uetaN do >oto
void set6a>elMStrin= eti%N aHusta la>el do >oto para o contedo de eti%
AoW
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
38/61
ria um evento %uando pressionado.
EemploW
0utton >oto U ne* 0uttonM$qN]
ADVAS
anvas & um componente completamente =en&rico. Ele eiste comofundao para outras
su>classes. Este componente no & muito til para usurios iniciantes ouintermedirios5 mas &
etremamente til para criar seus prprios componentes.
onstrutoresW
anvasMN cria um canvas
o & uma caia pe%uena com um la>el ao lado. $ usurio pode clicaron ou o. Isto
& til %uando vocC tem uma variedade de atri>utos %ue podem ser li=adosou no. Alem disto5 mais
de uma c7ec@>o podem ser a=rupadas com um 7ec@>oGroup parapossi>ilitar %ue apenas um
dos itens seHa selecionado ao mesmo tempo.
onstrutoresW
7ec@>oMN cria uma c7ec@>o >ranca com opo false
7ec@>oMStrin= l>lN cria uma c7ec@>o com la>el l>l com opo false
7ec@>oMStrin= l>l5 7ec@>oGroup =roup5 >oolean stateN cria umac7ec@>o com a opo
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
39/61
l>l em true contida no =rupo 7ec@Group.
elMN retorna o la>el da c7ec@>o
Strin= set6a>elMStrin= l>lN aHusta o la>el da c7ec@>o para l>l
>oolean =etStateMN retorna o estado da c7ec@>o
void setStateM>oolean estN aHusta o estado da c7ec@>o para est
7ec@>oGroup =et7ec@>oGroupMN retorna o =rupo %ue a c7ec@>opertence
void set7ec@>oGroupM7ec@>oGroup =N aHusta nova7ec@>oGroupM=rupoN %ue pertence
a c7ec@>o
AoW
ria um evento %uando o estado muda
EemploW
7ec@>o a0o U ne* 7ec@>oMS$,N]
6A0E6
m la>el & simplesmente um teto %ue pode ser colocado em umcomponente.
onstrutoresW
6a>elMN cria um la>el vaio
6a>elMStrin= l>l5 int alinN cria um la>el com o teto contido em l>l e com oalin7amento
especi:cado em alin5 podendo serW
6a>el.6E8T alin7amento a es%uerda
6a>el.EDTEB centralia teto
6a>el.BIGT alin7amento a direita
el
void setAli=nmentMint alin7aN aHusta o alin7amento do la>el para alin7a.
Strin= =etTetMN retorna o teto do la>el
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
40/61
void setTetMStrin= l>lN aHusta o teto do la>el para l>l
AoW
Den7uma5 por default
EemploWApostila de Java Grupo PET - Informtica
P=ina ##
6a>el a6a>el U ne* 6a>elMelloYN]Apostila de Java Grupo PET -Informtica
P=ina #)
6IST
6ist & uma lista de itens aonde o usurio pode escol7er um item ou mais.
onstrutoresW
6istMN cria uma lista nova sem lin7as visLveis5 desa>ilitando mltiplassele2es
6istMint nlin5 >oolean scrN cria uma lista nova com um numero visLvel delin7as nlin e com
mltiplas sele2es se scr for True
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
41/61
7oice & um menu de escol7a. Por default o primeiro item adicionado a ummenu c7oice & o
item default.
onstrutoresW
pu>lic 7oiceMN cria menu de escol7a5 inicialmente vaio.
ar & uma >arra desliante. =eralmente usada %uando o usurioprecisa se locomover
rapidamente numa =rande rea. Pode ser orientada verticalmente ou7oriontalmente.
onstrutoresW
Scroll>arMN ria scroll>ar orientada verticalmente
Scroll>arMint oriN ria scroll>ar orientada por ori5 sendo %ue ori pode serW
Scroll>ar.$BI$DTA6
Scroll>ar.VEBTIA6 Scroll>arMint ori5 int val5 int vis5 int min5 int maN ria uma scroll>ar comorientao ori5 item
default val5 taman7o da pa=ina vis5 mLnimo min e mimo ma.
arApostila de JavaGrupo PET - Informtica
P=ina #+
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
42/61
void setValueMint valN aHusta o valor da scroll>ar para item na posio val
int =etar
int =etar
EemploW
Scroll0ar U ne* Scroll>arMScroll>ar.$BI$DTA6N]
TET8IE69
Tet8ield & um componente %ue 7a>ilita o usurio entrar com uma lin7a deteto. Isto & o
su:ciente para %uase todas as entradas de dados. &m.
onstrutoresW
pu>lic Tet8ieldMN cria um campo de teto
pu>lic Tet8ieldMint tamN cria um campo de teto com taman7o tam
pu>lic Tet8ieldMStrin= ttN cria um campo de teto aHustado com a strin=tt
pu>lic Tet8ieldMStrin= tt5 int tamN cria um campo de teto aHustado coma strin= tt e com o
taman7o tam
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
43/61
TetAreaMN ria um campo de teto
TetAreaMint lin5 int colN ria um campo de teto com lin lin7as e colcolunas
TetAreaMStrin= tt5int lin5 int colN ria um campo de teto com ocontedo tt5 lin lin7as e col
colunas
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
44/61
lista U ne* 6istMN]
>arra!rola=em U ne* Scroll>arMScroll>ar.$BI$DTA6N]
campo!teto U ne* Tet8ieldM#/5+N]
area!teto U ne* TetAreaM$@5+5)"N]
lista.addItemMPrimeiroN]
lista.addItemMSe=undoN]
addM>otoN]
addMc>oN]
addMtetoN]
addMlistaN]
addM>arra!rola=emN]
addMcampo!tetoN]
addMarea!tetoN]
^
^
$DTAIDEBS
ontainers so simplesmente componentes %ue podem conter outroscomponentes. Pense
como uma maneira de su>dividir uma rea para construir a interface com ousurio5 aonde os
componentes podem ser colocados.
Eistem dois tipos de containersW Panels e ,indo*s. A maior diferena entre
eles & %ue umPanel & de:nido como uma rea em uma Hanela H eistente e ,indo* &uma Hanela completamente
nova. Quando a aplicao & uma Applet o nico container %ue pode seraplicado & o Panel.
EemploW
import Hava.a*t.]
import Hava.applet.Applet]
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
45/61
pu>lic class e+! etends Applet Z
8rame aframe]
pu>lic void initMN Z
aframe U ne* 8rameMEemplo de 8rameN]
aframe.s7o*MN]
^
^Apostila de Java Grupo PET - Informtica
P=ina #/
6A$TS
6a4out pode ser de:nido como uma mascara %ue & colocada so>re umcontainer para
de:nir como os seus componentes sero adicionados. Dormalmente & usadoo la4out
0order6a4outMN5 >aseado nos pontos cardeais.
EemploW
import Hava.a*t.]
import Hava.applet.Applet]
pu>lic class e+!/ etends Applet Z
0utton >oto15 >oto(5 >oto#5 >oto)5 >oto+]
pu>lic void initMN Z
set6a4outMne* 0order6a4outMNN]
>oto1 U ne* 0uttonMDorteN]
>oto( U ne* 0uttonMSulN]
>oto# U ne* 0uttonM6esteN]
>oto) U ne* 0uttonM$esteN]
>oto+ U ne* 0uttonMentroN]
addMDort75>oto1N]
addMSout75>oto(N]
addMEast5>oto#N]
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
46/61
addM,est5>oto)N]
addMenter5>oto+N]
^
^
ilitando componente
VABI_VEIS 9E $B 9E8IDI9AS D$ JAVA
>lac@ >lue c4an dar@Gra4
=ra4 =reen li=7tGra4 ma=enta
oran=e pin@ red *7ite
4ello*Apostila de Java Grupo PET - Informtica
P=ina #3
Eemplo de Interface de uma calculadoraW
import Hava.a*t.]
import Hava.applet.Applet]
pu>lic class e+!/ etends Applet Z
6a>el displa4]
Panel >ottom]
Panel num!panel]
Panel func!panel]
0utton num>er[\ U ne* 0utton[1"\]
0utton function[\ U ne* 0utton[\]
pu>lic void initMN Z
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
47/61
set6a4outMne* 0order6a4outMNN]
displa4 U ne* 6a>elM"5 6a>el.BIGTN]
addMDort75 displa4N]
>ottom U ne* PanelMN]
>ottom.set6a4outMne* 0order6a4outMNN]
num!panel U ne* PanelMN]
num!panel.set6a4outMne* Grid6a4outM)5#NN]
for Mint U?] U"] --N Z
num>er[\ U ne* 0uttonMMne* Strin=MNN.value$fMNN]
num!panel.addMnum>er[\N]
^
function[)\ U ne* 0uttonM.N]
num!panel.addMfunction[)\N]
function[+\ U ne* 0uttonMUN]
num!panel.addMfunction[+\N]
>ottom.addMenter5 num!panelN]
func!panel U ne* PanelMN]
func!panel.set6a4outMne* Grid6a4outM)51NN]
function["\ U ne* 0uttonMN]
function[1\ U ne* 0uttonM-N]
function[(\ U ne* 0uttonMN]
function[#\ U ne* 0uttonMKN]
for Mint U"] R)] N
func!panel.addMfunction[\N]
>ottom.addMEast5 func!panelN]
addMenter5>ottomN]
^
^Apostila de Java Grupo PET - Informtica
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
48/61
P=ina #?
.#. Gr:cos
A lin=ua=em Java contem um numero =rande de primitivas =r:cas %uepossi>ilitam ao
usurio criar =r:cos facilmente e rapidamente. A>aio uma pe%uenarelao dos m&todos mais teis
da classe Grap7icsW
disposeMN
limpa conteto corrente do o>Heto
clearBectMint 5 int 45 int *idt75 int 7ei=7tN
limpa a rea do ret;n=ulo especi:cado com a cor atual
int coordenada inicial
int 4 coordenada 4 inicial
int *idt7 lar=ura
int 7ei=7t altura
dra*6ineMint 15 int 415 int (5 int 4(N
desen7a uma lin7a
int 1 coordenada inicial
int 41 coordenada 4 inicial
int ( coordenada :nal
int 4( coordenada 4 :nal
dra*BectMint 5 int 45 int *idt75 int 7ei=7tN
desen7a um ret;n=ulo
int coordenada inicial
int 4 coordenada 4 inicial
int *idt7 lar=ura
int 7ei=7t alturaApostila de Java Grupo PET - Informtica
P=ina )"
dra*BoundBectMint 5 int 45 int *idt75 int 7ei=7t5 int arc,idt75 int arcei=7tN
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
49/61
desen7a um ret;n=ulo com as >ordas arredondadas
int coordenada inicial
int 4 coordenada 4 inicial
int *idt7 lar=ura
int 7ei=7t altura
int arc,idt7 di;metro 7oriontal do arco nos ) cantos
int arcei=7t di;metro vertical do arco nos ) cantos
dra*$valMint 5 int 45 int *idt75 int 7ei=7tN
desen7a um circulo
int coordenada inicial
int 4 coordenada 4 inicial
int *idt7 lar=ura
int 7ei=7t altura
dra*#9BectMint 5 int 45 int *idt75 int 7ei=7t5 >oolean raisedN
desen7a um ret;n=ulo em # dimens2es
int coordenada inicial
int 4 coordenada 4 inicial
int *idt7 lar=ura
int 7ei=7t altura
>oolean raised se True ret;n=ulo aparece aumentado5 seno diminuLdo
dra*Pol4=onMint Points[\5 int 4Points[\5 int nPointsN
desen7a um polL=ono. Qual%uer polL=ono criado tem %ue conter um ponto%ue o fec7a. Java no
cria polL=onos fec7ados automaticamente5 ento ten7a sempre certea %ueos pontos inicial e :nal
so i=uais.
int Points[\ arra4 de coordenadas
int 4Points[\ arra4 de coordenadas 4
int nPoints[\ numero de pontos
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
50/61
dra*Strin=MStrin= str5 int 5 int 4N
desen7a strin= com a fonte e taman7o correntes
Strin= str strin= a ser desen7ada
int coordenada
int 4 coordenada 4
:llBectMint 5 int 45 int *idt75 int 7ei=7tN
preenc7e um ret;n=ulo com a cor corrente
int coordenada inicial
int 4 coordenada 4 inicial
int *idt7 lar=ura
int 7ei=7t alturaApostila de Java Grupo PET - Informtica
P=ina )1Apostila de Java Grupo PET - Informtica
P=ina )(
:llBoundBectMint 5 int 45 int *idt75 int 7ei=7t5 int arc,idt75 int arcei=7tN
preenc7e um ret;n=ulo com >ordas arredondadas com a cor corrente
int coordenada inicial
int 4 coordenada 4 inicial
int *idt7 lar=ura
int 7ei=7t altura
int arc,idt7 di;metro 7oriontal do arco nos ) cantos
int arcei=7t di;metro vertical do arco nos ) cantos
:ll#9BectMint 5 int 45 int *idt75 int 7ei=7t5 >oolean raisedN
preenc7e um ret;n=ulo #9 com a cor corrente
int coordenada inicial
int 4 coordenada 4 inicial
int *idt7 lar=ura
int 7ei=7t altura
>oolean raised se True ret;n=ulo aparece aumentado5 seno diminuLdo
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
51/61
:ll$valMint 5 int 45 int *idt75 int 7ei=7tN
preenc7e um circulo com a cor corrente
int coordenada inicial
int 4 coordenada 4 inicial
int *idt7 lar=ura
int 7ei=7t altura
:llPol4=onMint Points[\5 int 4Points[\5 int nPointsN
preenc7e um polL=ono com a cor corrente
int Points[\ arra4 de coordenadas
int 4Points[\ arra4 de coordenadas 4
int nPoints[\ numero de pontos
olor =etolorMN
retorna a cor corrente
setolorMolor cN
aHusta a cor corrente
olor c nova cor corrente
8ont =et8ontMN
retorna a fonte corrente
set8ontM8ont fN
aHusta a fonte corrente
8ont f nova fonte corrente
astante relevante da lin=ua=emJava. A incorporao
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
52/61
dos conceitos de sincroniao e variveis de condio dentro da prprialin=ua=em permite %ue
pro=ramadores m&dios consi=am utiliar conceitos de computaoconcorrente de forma >em
facilitada5 o %ue possi>ilita uma mel7oria de performance dos pro=ramas.Deste capLtulo veremos o
%ue so t7reads5 analisaremos seus estados e m&todos >sicos eaprenderemos a inserir t7reads em
applets.
/.1. $ %ue so t7reads'
ma t7read pode ser de:nido como Xum uo de controle se%encial
isolado dentro de um
pro=rama. omo um pro=rama se%encial %ual%uer5 uma t7read tem umcomeo5 um :m e uma
se%Cncia de comandos. Entretanto5 uma t7read em Java no & umpro=rama5 no eecuta soin7o5
eecuta dentro de um pro=rama.
T7reads permitem %ue um pro=rama simples possa eecutar vrias tarefas
diferentes aomesmo tempo5 independentemente umas das outras.
Pro=ramas multit7readed so pro=ramas %ue cont&m vrias t7reads5eecutando tarefas
distintas5 simultaneamente. $ >ro*ser otJava5 implementado em Java5 &um eemplo. 9a mesma
forma %ue o Detscape5 com o otJava vocC pode faer um scroll em umap=ina en%uanto carre=a
uma ima=em ou eecuta vrios applets ao mesmo tempo.
Em Java5 t7reads so cidados de primeira ordem5 se constituindo deinst;ncias da classe
T7read %ue fornecem suporte a comunicao concorrente. A classe T7readprovC os m&todos
necessrios para criar e controlar t7reads Mindependentemente daplataforma usadaN e eecut-los
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
53/61
concorrentemente. A real implementao de t7reads & feita pelo sistemaoperacional.
$ corpo de uma t7read & o seu m&todo runMN5 e & nele %ue so eecutadasas tarefas Os
%uais t7read se destina. Podemos implementar t7reads de duas maneirasMam>as suportadas pelos
construtores da classe T7readNW
b riando uma su>classe da classe T7read e de:nindo o seu m&todo runMN demaneira ade%uada O
realiao da tarefa do t7read.
b riando uma inst;ncia de T7read %ue rece>e como par;metro um o>Heto
%ue implemente a
interface Bunna>le - esse o>Heto providenciar o m&todo runMN para at7read.
A lin=ua=em Java fornece meios para criarmos t7reads como daemons5a=ruparmos t7reads5
sincroni-los e controlar suas prioridades.
/.(. $s estados de uma t7readApostila de Java Grupo PET - Informtica
P=ina )+
b De* T7read
Inicialiao da t7read - feita atrav&s do construtor T7readMN.
class
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
54/61
b Bunna>le
Este & o estado em %ue o t7read est pronto para rodar. $ m&todo startMNre%uisita os
recursos do sistema necessrios para rodar a t7read e c7ama o seu m&todorunMN. $ m&todo runMN &
a Xalma de um t7read] & neste m&todo %ue de:nimos o %ue a t7read vaieecutar.
T7read m4T7read U ne* le5 ao inv&s de Bunnin=5 por%ue a t7read pode no estarrealmente
sendo eecutada. Ima=ine um computador com um nico processador -seria impossLvel eecutar
todas as t7reads ao mesmo tempo. $ %ue ocorre & %ue a P deve serescalonada entre as vrias
t7reads. Quando uma t7read est Bunnin=5 ela est tam>&m Bunna>le5 asinstru2es do seu m&todo
runMN & %ue esto sendo eecutadas pela P.
b Dot Bunna>le
$ estado Dot Bunna>le si=ni:ca %ue a t7read est impedida de eecutar poral=uma rao.
Eistem ) maneiras de uma t7read ir para o estado Dot Bunna>le.
1. rece>er a mensa=em suspendMN]
(. rece>er a mensa=em sleepMN]
#. a t7read >lo%ueia5 esperando IK$]Apostila de Java Grupo PET - InformticaP=ina )
). a t7read usa seu m&todo *aitMN para esperar por uma varivel decondio.Apostila de Java Grupo PET - Informtica
P=ina )/
$ eemplo a>aio coloca o applet m4T7read para dormir por 1" se=undosW
T7read m4T7read U ne*
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
55/61
tr4 Z
m4T7read.sleepM1""""N]
^ catc7 MInterruptedEception eN Z ^
ada uma destas maneiras tem a sua forma especL:ca de sair do estado DotBunna>le.
1. se a t7read foi suspensa5 al=u&m precisa mandar-l7e a mensa=emresumeMN]
(. se a t7read foi posta para dormir5 ela voltar a ser Bunna>le %uando onmero de
milise=undos determinado passar]
#. se a t7read est >lo%ueada5 esperando por IK$5 a operao precisa sercompletada]
). se a t7read est esperando por uma varivel de condio5 o o>Heto %ue aret&m precisa li>er-
la5 atrav&s de um notif4MN ou de um notif4AllMN
b 9ead
ma t7read pode morrer de Xcausas naturais M%uando o seu m&todo runMNaca>a
normalmenteN ou pode ser morto pelo m&todo stopMN.
possLvel controlar a ordem de eecuo de vrias t7reads de:nindoprioridades para eles.
$ escalonador de t7reads do Java se=ue a se=uinte re=raW a %ual%uerinstante5 a t7read corrente & a
de maior prioridade. Para %ue a t7read de maior prioridade ceda P aoutra t7read5 ele precisa
enviar para si o m&todo 4ieldMN5 ou5 entrar no estado Dot Bunna>le. asocontrrio5 ele ir eecutar
at& %ue termine seu m&todo runMN.
Para desco>rir a prioridade de uma t7read5 podemos usar o m&todo=etPriorit4MN e5 para
de:ni-la setPriorit4MnN5 onde n & um inteiro de 1 a 1" M1" representando aprioridade mimaN.
/.#. T7reads em Applets
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
56/61
At& a=ora ns vimos como tra>al7ar com t7reads criadas a partir da classeT7read ou de
uma classe %ue 7erde da classe T7read. Sa>emos %ue esta classe provC osm&todos >sicos para se
lidar com t7reads MrunMN5 startMN5 stopMN5 sleepMN5 etc.N.
Supon7a %ue vocC %ueira5 a=ora5 implementar uma t7read dentro de umaapplet. Por
eemplo5 supon7a %ue vocC %uer faer uma applet rel=io5 %ue atualia oseu displa4 a cada
se=undo. A classe %ue vai implementar o seu rel=io precisa ser umasu>classe da classe Applet
para 7erdar todas as facilidades oferecidas por ela. omo faC-la5 ento57erdar tam>&m da classe
T7read' A interface Bunna>le & a soluoY
Qual%uer o>Heto %ue implemente a interface Bunna>le pode utiliar o seum&todo runMN para
ser eecutado como uma t7read.
class loc@ etends Applet implements Bunna>le Z
....
^
A applet loc@ precisa5 a=ora5 criar a sua prpria t7read. Isto &
feito no seu m&todo startMN
pu>lic void startMN Z
if M cloc@T7read UU nullN ZApostila de Java Grupo PET - Informtica
P=ina )3
cloc@T7read U ne* T7readMt7is5 Xloc@N]
^
^
$>serve a c7amada ao construtor T7readMt7is5 Xloc@N. $ construtor
precisa rece>er
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
57/61
como primeiro ar=umento um o>Heto %ue implemente a interface Bunna>le5este o>Heto & %ue vai
fornecer o m&todo runMN da t7read cloc@T7read.
pu>lic void runMN Z
*7ile Mcloc@T7read YU nullN Z
repaintMN]
tr4 Z
[email protected]"""N]
^ catc7 MInterruptedEception eN Z ^
^
^
Do m&todo stopMN do applet loc@5 temos %ue c7amar tam>&m o m&todostopMN da t7read
cloc@T7read5 caso contrrio5 a t7read vai continuar eecutando econsumindo recursos mesmo
depois %ue sairmos da p=ina da applet.
pu>lic void stopMN [email protected]]
cloc@T7read U null]
^
Se vocC revisitar a p=ina5 o startMN da applet loc@ & c7amado novamente euma nova
t7read & inicialiada.
/.). erdando de T7read Implementando Bunna>le
Eistem duas maneiras de implementar t7readsW
1. erdando da classe T7read ou de su>classes da classe T7read.
(. Implementando a interface Bunna>le e criando uma t7read Mpassando oo>Heto %ue implementa
Bunna>le como ar=umentoN.
Qual opo utiliar'
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
58/61
Se vocC precisa estender outra classe Mo eemplo mais comum & a classeAppletN5 use
Bunna>le. Entretanto5 se vocC est planeHando apenas so>repor o m&todorunMN5 e mais nen7um
outro m&todo de T7read5 use Bunna>le. lasses no devem 7erdar de outrasclasses5 a menos %ue o
pro=ramador pretenda modi:car ou aprimorar o comportamentofundamental da classe.Apostila de Java Grupo PET - Informtica
P=ina )?
A>aio o cdi=o completo da applet loc@W
K
op4ri=7t McN 1??+5 1?? Sun ute t7is soft*are
and its documentation for D$D-$
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
59/61
T7read cloc@T7read U null]
pu>lic void startMN Z
if Mcloc@T7read UU nullN Z
cloc@T7read U ne* T7readMt7is5 loc@N]
^
^
pu>lic void runMN Z
KK loop terminates *7en cloc@T7read is set to null in stopMN
*7ile MT7read.currentT7readMN UU cloc@T7readN Z
repaintMN]
tr4 Z
[email protected]"""N]
^ catc7 MInterruptedEception eNZ
^
^
^
pu>lic void paintMGrap7ics =N Z
9ate no* U ne* 9ateMN]
=.dra*Strin=Mno*.=etoursMN W no*.=eter re
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
60/61
3.1. B6
Para a%ueles %ue =ostariam de interli=ar suas Applets com outros recursosda Internet5 o
Java cont&m classes especi:cas para isto.
3.(. 8ila5 Pil7a5 Ta>ela as7
A maioria das estruturas a>stratas de dados H esto implementadas noJava5 veHa as
>i>liotecas contidas em Hava.util.
3.#. Javadoc
8aer a documentao de um sistema sempre foi um pro>lema. Da
lin=ua=em Java eiste um=erador de documentao em Tientes de Pro=ramaoK9e>u=ao
Al&m do J9q5 eistem vrios outros am>ientes de pro=ramao e depuraopara Java5
a>aio relacionamos os mais con7ecidosW
S4mantec EspressoW
Am>iente completo de desenvolvimento para ,indo*s ?+5 al&m de um=erenciador de
proHeto5 cont&m um poderoso.
0orland 6atteW
$ 6atte est ainda em desenvolvimento pela 0orland. Este am>iente estsendo
desenvolvido totalmente em Java5 isto vai possi>ilitar a 0orland vender o6atte para todas as
plataformas.
Javare ,indo*s ?+ e DT. muitosimples5 pe%ueno
e fcil de utiliar.
7/23/2019 Apostila de JAVAApostila de Java Grupo PET
61/61
JW
Am>iente de desenvolvimento ainda em fase de desenvolvimento pelaientes H montados5 fa parte do osmo ,e>s4stem.
osmo ode & avaliavel para esta2es Silicon Grap7ics.Apostila de JavaGrupo PET - Informtica
P=ina +1
BeferCncias 0i>lio=r:cas
A6ADTABA5 Andreia Almeida. Anais da V JAI -