Você está na página 1de 11

INSTITUTO FEDERAL DE EDUCAO, CINCIA E TECNOLOGIA DE SO PAULO

Campus Salto
CURSO: Tecnologia em Anlise e Desenvolvimento de Sistemas
DISCIPLINA: POO - Programao Orientada a Objetos
AULA NMERO: 02
PROFESSOR: Edson !ra"ami
Sum!"o
# AP$ESE%TA&'O ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( #
2 DESE%)O*)+E%TO ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( #
2(# +nter,ace -r,ica do .s!rio /-.+0 ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( #
2(#(# Dilogos (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( #
2(#(2 1rames ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 2
2(#(2 3om4onentes de +nter,ace -r,ica ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 2
2(#(5 Tratamento de Eventos de +nter,ace ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 6
2 AT+)+DADE (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( #0
5 7+7*+O-$A1+A 78S+3A ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( ##
# APRESENTAO
%a a!la de 9oje vamos a4resentar e disc!tir conceitos relacionados com a
im4lementao de inter,aces gr,icas em java: es4eci,icamente o 4acote s;ing(
$ DESEN%OL%IMENTO
2.1 Interface Grfica do Usurio (GUI)
As inter,aces gr,icas em <ava 4odem ser de tr=s ti4os:
#( A44lets>
2( A4licativos /Pacotes a;t: S;ing0
2( ?eb /<SP e Servlets0
$&#&# D"lo'os
Os Dilogos so janelas sim4les e 4adroni@adas A!e servem 4ara reali@ar !m
dilogo com o !s!rio( Elas so criadas e logo A!e o !s!rio d a res4osta elas so
,ec9adas e o res!ltado retorna 4ara o 4rograma( Os Dilogos !sam a classe
JoptionPane(
Os 4rinci4ais ti4os de dilogos so:
ConfirmDialog
Pede con,irmao 4ara o !s!rio sobre !ma ao
InputDialog
Permite a entrada de teBto 4elo !s!rio
MessageDialog
EBibe !ma mensagem 4ara o !s!rio
OptionDialog
Dilogo A!e 4ode reali@ar todas as ,ormas anteriores
EBem4lo:
import java.awt.*;
#5C2C20## 4( # de ##
INSTITUTO FEDERAL DE EDUCAO, CINCIA E TECNOLOGIA DE SO PAULO
Campus Salto
import javax.swing.JOptionPane;
public class Dialogo
public static voi! main"#tring$% args&
#tring frase ' JoptionPane.s(owInputDialog"null)
*!igite a frase*) *janela+*),&;
JOptionPane.s(owMessageDialog"null) frase&;
-
-
$&#&$ F!am(s
.m Frame D !ma classe A!e 4ermite a constr!o de janelas( O Frame
gera !ma janela com bordas e !ma barra de tEt!lo(
EBem4lo de !m frame:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class .xemplo/rame,+ exten!s J/rame implements 0ction1istener
private J2utton b+)b3;
private J1abel l+) l3;
private J4ext/iel! t+)t3;
public .xemplo/rame,+"&
b+ ' new J2utton"*2otao +*&;
b3 ' new J2utton"*2otao 3*&;
b+.a!!0ction1istener"t(is&;
b3.a!!0ction1istener"t(is&;
l+ ' new J1abel"*1abel +*&;
l3 ' new J1abel"*1abel 3*&;
t+ ' new J4ext/iel!"*4ext/iel! +*&;
t3 ' new J4ext/iel!"*4ext/iel! 3*&;
t(is.getContentPane"&.set1a5out"new /low1a5out"&&;
t(is.getContentPane"&.a!!"l+&;
t(is.getContentPane"&.a!!"t+&;
t(is.getContentPane"&.a!!"l3&;
t(is.getContentPane"&.a!!"t3&;
#5C2C20## 4( 2 de ##
INSTITUTO FEDERAL DE EDUCAO, CINCIA E TECNOLOGIA DE SO PAULO
Campus Salto
t(is.getContentPane"&.a!!"b+&;
t(is.getContentPane"&.a!!"b3&;
t(is.set1ocation"3,,)3,,&;
t(is.set#i6e"3,,)+7,&;
-
public voi! actionPerforme!"0ction.vent e&
88a9ui vai o c:!igo para tratar os eventos !os bot;es
if "e.get#ource"& '' b+&
#5stem.out.println"<voce pressionou b+=>t+.get4ext"&&;
-
if "e.get#ource"& '' b3&
#5stem.out.println"<voce pressionou b3=>t3.get4ext"&&;
-
-
public static voi! main"#tring args$%&
J/rame janela ' new .xemplo/rame,+"&;
janela.s(ow"&;
?in!ow1istener x ' new ?in!ow0!apter "&
@Overri!e
public voi! win!owClosing"?in!ow.vent e&
#5stem.exit",&;
-
-;
janela.a!!?in!ow1istener"x&;
-
-
$&#&) Compo*(*t(s +( I*t(!,a-( G!,"-a
.utto*
So com4onentes de inter,ace A!e re4resentam !m boto A!e 4oss!i a met,ora
de !m boto de !m a4arel9o elDtrico( O boto se com4orta da seg!inte maneira:
A!ando no est selecionado o! A!ando o c!rsor do mo!se no est sobre ele a
a4ar=ncia D do desen9o a esA!erda> A!ando o boto est selecionado a a4ar=ncia D a
do desen9o do meio> A!ando ele D 4ressionado a a4ar=ncia D a da direita(
C/(-0.o1
So itens de inter,ace A!e 4odem ser FmarcadosF o! FdesmarcadosF 4odendo estar
associados a !m valor verdadeiro o! ,also( 3ada c9ec"boB 4ode ser !sado de maneira
inde4endente o! em gr!4o( De maneira inde4endente:
set1a5out"new Ari!1a5out"B) +&&;
a!!"new C(ecCbox"*one*) null) true&&;
a!!"new C(ecCbox"*two*&&;
a!!"new C(ecCbox"*t(ree*&&;
#5C2C20## 4( 2 de ##
INSTITUTO FEDERAL DE EDUCAO, CINCIA E TECNOLOGIA DE SO PAULO
Campus Salto
C/(-0.o1G!oup
So -r!4os de 39ec"7oB( G!ando os 39ec"7oB so !sados em gr!4o: a4enas !m
deles 4ode estar FmarcadoF em !m determinado momento( G!ando !m D FmarcadoF os
o!tros vo 4ara o estado FdesmarcadoF( O 39ec"7oB-ro!4 !sa a met,ora de botHes
de rdios antigos(
set1a5out"new Ari!1a5out"B) +&&;
C(ecCboxAroup cbg ' new C(ecCboxAroup"&;
a!!"new C(ecCbox"*one*) cbg) true&&;
a!!"new C(ecCbox"*two*) cbg) false&&;
a!!"new C(ecCbox"*t(ree*) cbg) false&&;
L"sts
So listas de itens A!e 4odem ser marcados o! desmarcados( A lista 4ode ser rolvel (
1ist lst ' new 1ist"D) false&;
lst.a!!"*Mercur5*&;
lst.a!!"*Eenus*&;
lst.a!!"*.art(*&;
lst.a!!"*Java#oft*&;
lst.a!!"*Mars*&;
cnt.a!!"lst&;
TeBt1ield
3am4o A!e 4ermite a insero o! edio de teBto com !ma lin9a(
4ext/iel! tf+) tf3) tfB) tfD;
tf+ ' new 4ext/iel!"&;
tf3 ' new 4ext/iel!"**) 3,&;
tfB ' new 4ext/iel!"*FelloG*&;
tfD ' new 4ext/iel!"*Fello*) B,&;
#5C2C20## 4( 5 de ##
INSTITUTO FEDERAL DE EDUCAO, CINCIA E TECNOLOGIA DE SO PAULO
Campus Salto
La2(l
Permite eBibir mensagens o! teBto dentro de !ma janela( Este cam4o no 4ermite a
alterao do teBto(
set1a5out"new /low1a5out"/low1a5out.C.H4.I) +,) +,&&;
a!!"new 1abel"*Fi 4(ereG*&&;
a!!"new 1abel"*0not(er 1abel*&&;
Pa*(l
So elemento A!e servem 4ara agr!4ar o!tros elementos da inter,ace( G!ando se
deseja colocar mais de !m com4onente: D necessrio A!e eles sejam colocados em !m
Panel( Eles ,!ncionam como se ,ossem divisHes das janelas(
t(is.getContentPane"&.set1a5out"new 2or!er1a5out"B)3&&;
JP+ ' new JPanel"&;
JP+.set1a5out"new /low1a5out"&&;
JP+.a!!"b+&;
JP+.a!!"b3&;
JP3 ' new JPanel"&;
JP3.set1a5out"new Ari!1a5out"B)3&&;
JP3.a!!"l+&;
JP3.a!!"t+&;
JP3.a!!"l3&;
JP3.a!!"t3&;
t(is.getContentPane"&.a!!"*Hort(*)JP+&;
t(is.getContentPane"&.a!!"*?est*)JP3&;
#5C2C20## 4( I de ##
INSTITUTO FEDERAL DE EDUCAO, CINCIA E TECNOLOGIA DE SO PAULO
Campus Salto
$&#&3 T!atam(*to +( E4(*tos +( I*t(!,a-(
E4(*tos +( Mous(
Os eventos de teclado so tratados atravDs das inter,aces o!se*istener e
o!seotion*istener (
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Mouse4racCer exten!s Jframe Implements Mouse1istener)
MouseMotion1istener
private J1abel status2ar;
public Mouse4racCer"&
super" *Demonstrating Mouse .vents* &;
status2ar ' new J1abel"&;
getContentPane"&.a!!" status2ar) 2or!er1a5out.#OJ4F &;
88 application listens to its own mouse events
a!!Mouse1istener" t(is &;
a!!MouseMotion1istener" t(is &;
set#i6e" 3K7) +,, &;
s(ow"&;
-
88 Mouse1istener event (an!lers
public voi! mouseClicCe!" Mouse.vent e &
status2ar.set4ext" *ClicCe! at $* > e.getL"& > *) * > e.getM"& > *%* &; -
public voi! mousePresse!" Mouse.vent e &
status2ar.set4ext" *Presse! at $* > e.getL"& > *) * > e.getM"& > *%* &; -
public voi! mouseIelease!" Mouse.vent e &
status2ar.set4ext" *Ielease! at $* > e.getL"& > *) * > e.getM"& > *%* &; -
public voi! mouse.ntere!" Mouse.vent e &
status2ar.set4ext" *Mouse in win!ow* &; -
public voi! mouse.xite!" Mouse.vent e &
status2ar.set4ext" *Mouse outsi!e win!ow* &; -
88 MouseMotion1istener event (an!lers
public voi! mouseDragge!" Mouse.vent e &
status2ar.set4ext" *Dragge! at $* > e.getL"& > *) * > e.getM"& > *%* &; -
public voi! mouseMove!" Mouse.vent e &
status2ar.set4ext" *Move! at $* > e.getL"& > *) * > e.getM"& > *%* &; -
public static voi! main" #tring args$% &
Mouse4racCer app ' new Mouse4racCer"&;
app.a!!?in!ow1istener"
new ?in!ow0!apter"&
public voi! win!owClosing" ?in!ow.vent e &
#5stem.exit" , &;
-
-
&;
-
-
T!atam(*to +( E4(*tos +o T(-la+o
Os eventos de teclado so tratados atravDs da inter,ace JeK*istener
#5C2C20## 4( 6 de ##
INSTITUTO FEDERAL DE EDUCAO, CINCIA E TECNOLOGIA DE SO PAULO
Campus Salto
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Ne5Demo exten!s J/rame implements Ne51istener
private #tring line+ ' **) line3 ' **;
private #tring lineB ' **;
private J4ext0rea text0rea;
public Ne5Demo"&
super" *Demonstrating Ne5stroCe .vents* &;
text0rea ' new J4ext0rea" +,) +7 &;
text0rea.set4ext" *Press an5 Ce5 on t(e Ce5boar!...* &;
text0rea.set.nable!" false &;
88 allow frame to process Ne5 events
a!!Ne51istener" t(is &;
getContentPane"&.a!!" text0rea &;
set#i6e" B7,) +,, &;
s(ow"&;
-
public voi! Ce5Presse!" Ne5.vent e &
line+ ' *Ne5 presse!O * > e.getNe54ext" e.getNe5Co!e"& &;
set1ines3an!B" e &;
-
public voi! Ce5Ielease!" Ne5.vent e &
line+ ' *Ne5 release!O * > e.getNe54ext" e.getNe5Co!e"& &;
set1ines3an!B" e &;
-
public voi! Ce545pe!" Ne5.vent e &
line+ ' *Ne5 t5pe!O * > e.getNe5C(ar"&;
set1ines3an!B" e &;
-
private voi! set1ines3an!B" Ne5.vent e &
line3 ' *4(is Ce5 is * > " e.is0ctionNe5"& P ** O *not * & >
*an action Ce5*;
#tring temp ' e.getNe5Mo!ifiers4ext" e.getMo!ifiers"& &;
lineB ' *Mo!ifier Ce5s presse!O * >
" temp.e9uals" ** & P *none* O temp &;
text0rea.set4ext"
line+ > *Qn* > line3 > *Qn* > lineB > *Qn* &;
-
public static voi! main" #tring args$% &
Ne5Demo app ' new Ne5Demo"&;
app.a!!?in!ow1istener"
new ?in!ow0!apter"&
public voi! win!owClosing" ?in!ow.vent e &
#5stem.exit" , &;
-
-
&;
-
-
Class(s A+apta+o!as
Para Tratarmos eventos 4odemos !sar classes ada4tadoras( As 3lasses Ada4tadoras
so classes A!e im4lementam as classes de tratamento de eventos( Para !sar as
classes ada4tadoras 4odemos criar !ma nova classe ada4tadora: A!e 9erda de !ma
#5C2C20## 4( L de ##
INSTITUTO FEDERAL DE EDUCAO, CINCIA E TECNOLOGIA DE SO PAULO
Campus Salto
classe ada4tadora do <ava( +sto 4ode ser ,eito criando !ma classe interna o! ,a@endo a
declarao on-line de !ma classe(
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class Painter exten!s J/rame
private int xEalue ' R+,) 5Ealue ' R+,;
public Painter"&
super" *0 simple paint program* &;
getContentPane"&.a!!"
new 1abel" *Drag t(e mouse to !raw* &)
2or!er1a5out.#OJ4F &;
a!!MouseMotion1istener"new MouseMotionFan!ler "&&;
set#i6e" B,,) +7, &;
s(ow"&;
-
public voi! paint" Arap(ics g &
g.fillOval" xEalue) 5Ealue) D) D &;
-
public static voi! main" #tring args$% &
Painter app ' new Painter"&;
app.a!!?in!ow1istener"
new ?in!ow0!apter"&
public voi! win!owClosing" ?in!ow.vent e &
#5stem.exit" , &;
-
-
&;
-
private class MouseMotionFan!ler exten!s MouseMotion0!apter
public voi! mouseDragge!" Mouse.vent e &
xEalue ' e.getL"&;
5Ealue ' e.getM"&;
repaint"&;
-
-
-
o! s!bstit!indo a declarao de !ma classe interna(
a!!MouseMotion1istener"
new MouseMotion0!apter"&
public voi! mouseDragge!" Mouse.vent e &
xEalue ' e.getL"&;
5Ealue ' e.getM"&;
repaint"&;
-
-
&;
5a*(las I*t(!*as
O 4rograma abaiBo ir criar !ma janela como esta( 3om !m men! Adicionar e !m item
de men! <anela +nterna( A <anela 4rinci4al 4oss!i !m es4ao interno c9amado
<Des"To41rame no A!al D 4ossEvel inserir janelas internas A!e so objetos da classe
<internal1rame(
#5C2C20## 4( M de ##
INSTITUTO FEDERAL DE EDUCAO, CINCIA E TECNOLOGIA DE SO PAULO
Campus Salto
Class( T(st(M(*u
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class 4esteMenu exten!s J/rame implements 0ction1istener
private JMenu2ar barra;
private JMenu menu;
private JMenuItem item;
private JDesCtopPane !esCtop;
public 4esteMenu"&
super" *Jsan!o um JDesCtopPane* &;
t(is.barra ' new JMenu2ar"&;
t(is.menu ' new JMenu" *0!icionar* &;
t(is.item ' new JMenuItem" *Janela Interna* &;
t(is.menu.a!!" t(is.item &;
t(is.barra.a!!" t(is.menu &;
t(is.setJMenu2ar" t(is.barra &;
t(is.!esCtop ' new JDesCtopPane"&;
t(is.getContentPane"&.a!!" t(is.!esCtop &;
item.a!!0ction1istener"t(is&;
t(is.set#i6e" 7,,) D,, &;
t(is.setEisible"true&;
-
public static voi! main" #tring args$% &
4esteMenu app ' new 4esteMenu"&;
app.a!!?in!ow1istener"
new ?in!ow0!apter"&
public voi! win!owClosing" ?in!ow.vent e &
#5stem.exit" , &;
-
-
&;
-
public voi! actionPerforme!"0ction.vent e&
JanelaInterna frame ' new JanelaInterna"&;
t(is.!esCtop.a!!" frame &;
-
-
#5C2C20## 4( N de ##
INSTITUTO FEDERAL DE EDUCAO, CINCIA E TECNOLOGIA DE SO PAULO
Campus Salto
Class( 5a*(laI*t(!*a
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class JanelaInterna exten!s JInternal/rame implements 0ction1istener
private J2utton b+;
private JPanel panel;
public JanelaInterna"&
super"*Janela Interna*) true) true) true) true &;
panel ' new JPanel"&;
t(is.getContentPane"&.a!!"panel) 2or!er1a5out.C.H4.I &;
t(is.set#i6e"+,,)+,,&;
t(is.setEisible"true&;
t(is.b+ ' new J2utton"*ON*&;
panel.set1a5out"new /low1a5out"&&;
panel.a!!"b+&;
t(is.b+.a!!0ction1istener"t(is&;
-
public voi! actionPerforme!"0ction.vent e&
if"e.get#ource"&'' t(is.b+&
#5stem.out.println"*apertou b+*&;
-
-
) ATI%IDADE
#( 3rie !ma a4licao com inter,ace gr,ica /-.+0 A!e receba o nOmero do 3P1 sem o
dEgito veri,icador e calc!le o dEgito e mostre na mesma inter,ace(
R('!a +( *('6-"o +o -l-ulo +o +7'"to +o CPF:
O 3P1 D com4osto 4or on@e algarismos: onde os dois Oltimos so c9amados de dEgitos
veri,icadores: o! seja: os dois Oltimos dEgitos so criados a 4artir dos nove 4rimeiros( O
clc!lo D ,eito em d!as eta4as !tili@ando o mPd!lo de diviso ##( Para eBem4li,icar
mel9or ser !sado !m 3P1 9i4otDtico: 4or eBem4lo: 222(222(666-88&
O p!"m("!o +7'"to D calc!lado com a distrib!io dos dEgitos colocando-se os valores
#0:N:M:L:6:I:5:2:2 con,orme a re4resentao abaiBo:
3 3 3 B B B S S S
+, T U K S 7 D B 3
%a seAQ=ncia m!lti4lica-se os valores de cada col!na:
3 3 3 B B B S S S
+, T U K S 7 D B 3
3, +U +S 3+ +U +7 3D +U +3
Em seg!ida e,et!a-se o somatPrio dos res!ltados /20R#MR(((R#MR#20: o res!ltado obtido
/#620 deve ser divido 4or ##( 3onsidere como A!ociente a4enas o valor inteiro: o resto
da diviso ser res4onsvel 4elo clc!lo do 4rimeiro dEgito veri,icador( #62 dividido 4or
## tem-se #5 de A!ociente e N de resto da diviso( 3aso o resto da diviso seja menor
A!e 2: o 4rimeiro dEgito veri,icador se torna 0 /@ero0: caso contrrio s!btrai-se o valor
obtido de ##: A!e D o caso: sendo assim o dEgito veri,icador D ##-N: o! seja: 2 /dois0
/222(222(666-$80(
#5C2C20## 4( #0 de ##
INSTITUTO FEDERAL DE EDUCAO, CINCIA E TECNOLOGIA DE SO PAULO
Campus Salto
Para o clc!lo do s('u*+o +7'"to ser !sado o 4rimeiro dEgito veri,icador j calc!lado(
onta-se !ma tabela semel9ante a anterior sP A!e desta ve@ D !sado na seg!nda lin9a
os valores ##:#0:N:M:L:6:I:5:2:2: j A!e D incor4orado mais !m algarismo 4ara esse
clc!lo(
3 3 3 B B B S S S 3
++ +, T U K S 7 D B 3
%a 4rPBima eta4a D ,eito como na sit!ao do clc!lo do 4rimeiro dEgito veri,icador:
m!lti4lica-se os valores de cada col!na e e,et!a-se o somatPrio dos res!ltados obtidos:
22R20R#MR25R2#R#MR20R25R#MR5S#NN(
3 3 3 B B B S S S 3
++ +, T U K S 7 D B 3
33 3, +U 3D 3+ +U B, 3D +U D
Agora 4ega-se esse valor e divide-se 4or ##( 3onsidere novamente a4enas o valor
inteiro do A!ociente: e com o resto da diviso: no caso #: !sa-se 4ara o clc!lo do
seg!ndo dEgito veri,icador: assim como na 4rimeira 4arte( 3aso o valor do resto da
diviso seja menor A!e 2: esse valor 4assa a!tomaticamente a ser @ero: A!e D o caso:
caso contrrio D necessrio s!btrair o valor obtido de ## 4ara se obter o dEgito
veri,icador( %este caso c9ega-se ao ,inal dos clc!los e descobre-se A!e os dEgitos
veri,icadores do 3P1 9i4otDtico so os nOmeros 2 e 0: 4ortanto o 3P1 ,ica:
$$$&)))&999:$;&
3 .I.LIOGRAFIA .<SICA
DE+TE*: T( ( e DE+TE*: P( <(( <ava: como Programar( Ed( 7oo"man( Porto Alegre(
200#(
ATO: A()(> TOP3$O1T: <(E(> .**A%: <(D( Data Str!ct!res and Algorit9ms( Addison-
?esleK: $eading: assac9!setts: #NM2(
)E*OSO: P(A(S(> SA%TOS: 3(S(> AUE)EDO: P(A(> 1.$TADO: A(*(( Estr!t!ras de
Dados( Editora 3am4!s: $io de <aneiro: $<: #NM6(
7OO3T: -(> $.7A.-T: <(> <A3O7SO%: +(( .* g!ia do !s!rio( Editora 3am4!s(
2000(
#5C2C20## 4( ## de ##