Professional Documents
Culture Documents
santos 1
Programao de Aplicaes Grficas
em Java
Rafael Santos
C
o
r
r
i
g
i
d
o
e
a
m
p
l
i
a
d
o
e
m
M
a
i
o
/
2
0
0
9
Maio/2009 http://www.lac.inpe.br/~rafael.santos 2
Tpicos
'%emplos
Maio/2009 http://www.lac.inpe.br/~rafael.santos 3
Tpicos
(eremos&&&
+o veremos&&&
Perguntas so !em4vindas3
Encapsulamento
Herana
Polimorfismo
Relao -um-tipo-de&
Maio/2009 http://www.lac.inpe.br/~rafael.santos 9
Princpios bsicos de orientao a objetos
nterfaces
!lasses "bstratas
'strutura geral/
B& ,eclarao de pacotes:
C& 7mportao de classes e%ternas:
D& ,eclarao da classe e atri!utos <e%& e%tenso=&
E& ,eclarao de campos e m8todos&
Boas prticas/
7ndentao e comentrios3
Maio/2009 http://www.lac.inpe.br/~rafael.santos 13
(m e)emplo de classe
package applets;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.geom.Ellipse2D;
public class Circulo
{
protected Color cor;
protected int x,y;
protected int raio;
public Circulo(Color c,int x,int y,int r)
{
cor c;
this.x x; this.y y; raio r;
!
public void "raw(Graphics2D g)
{
g.setColor(cor);
Ellipse2D.#loat circ new Ellipse2D.#loat(x$raio,y$raio,raio%2,raio%2);
g."raw(circ);
!
!
Maio/2009 http://www.lac.inpe.br/~rafael.santos 14
(m e)emplo de classe
,eclarao de pacote&
,eclarao da classe&
$onstrutor&
F8todos&
Maio/2009 http://www.lac.inpe.br/~rafael.santos 15
(m e)emplo de classe com *erana
package applets;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.geom.Ellipse2D;
public class Circulo&ree'chi"o extends Circulo
{
protected Color cor&;
public Circulo&ree'chi"o(Color c,Color p,int x,int y,int r)
{
super(c,x,y,r);
cor& p;
!
public void "raw(Graphics2D g)
{
g.setColor(cor&);
Ellipse2D.#loat circ new Ellipse2D.#loat(x$raio,y$raio,raio%2,raio%2);
g.(ill(circ);
super."raw(g);
!
!
Maio/2009 http://www.lac.inpe.br/~rafael.santos 16
(m e)emplo de classe com *erana
Fais -erana&
7nstAncias anGnimas3
Layouts&
F8todos Hteis/
Painel/ getInsets()
Maio/2009 http://www.lac.inpe.br/~rafael.santos 37
Layout nulo
import java.awt.%;
import javax.swi'g.%;
public class Ex=ayout@ulo extends *#rame
{
public Ex=ayout@ulo()
{
super(:Exemplo "e =ayout @ulo:);
Co'tai'er c getCo'te't&a'e();
c.set=ayout(null);
*=a6el l. new *=a6el(:=a6el .:);
*=a6el l2 new *=a6el(:=a6el 2:);
*=a6el l0 new *=a6el(:=a6el 0:);
l..set?ac7grou'"(Color.WHITE); l..set8paDue(true);
l..set?ou'"s(-,-,.--,2-);
l2.set?ac7grou'"(Color.YELLOW); l2.set8paDue(true);
l2.set?ou'"s(2-,2-,.--,2-);
l0.set?ac7grou'"(Color.GREEN); l0.set8paDue(true);
l0.set?ou'"s(2-,2-,.--,2-);
c.a""(l.); c.a""(l2); c.a""(l0);
pac7();
set5isi6le(true);
setDe(aultClose8peratio'(*#rame.EXIT_ON_CLOSE);
!
public static void mai'(+tri'g34 args)
{
new Ex=ayout@ulo();
!
!
Maio/2009 http://www.lac.inpe.br/~rafael.santos 38
Layout nulo
import java.awt.%;
import javax.swi'g.%;
public class Ex=ayout@ulo extends *#rame
{
public Ex=ayout@ulo()
{
super(:Exemplo "e =ayout @ulo:);
Co'tai'er c getCo'te't&a'e();
c.set=ayout(null);
*=a6el l. new *=a6el(:=a6el .:);
*=a6el l2 new *=a6el(:=a6el 2:);
*=a6el l0 new *=a6el(:=a6el 0:);
l..set?ac7grou'"(Color.WHITE); l..set8paDue(true);
l..set?ou'"s(-,-,.--,2-);
l2.set?ac7grou'"(Color.YELLOW); l2.set8paDue(true);
l2.set?ou'"s(2-,2-,.--,2-);
l0.set?ac7grou'"(Color.GREEN); l0.set8paDue(true);
l0.set?ou'"s(2-,2-,.--,2-);
c.a""(l.); c.a""(l2); c.a""(l0);
set5isi6le(true);
setDe(aultClose8peratio'(*#rame.EXIT_ON_CLOSE);
set+i,e(.2-,2-);
!
public static void mai'(+tri'g34 args)
{
new Ex=ayout@ulo();
!
!
Maio/2009 http://www.lac.inpe.br/~rafael.santos 39
Layout nulo
import java.awt.%;
import javax.swi'g.%;
public class Ex=ayout@ulo extends *#rame
{
public Ex=ayout@ulo()
{
super(:Exemplo "e =ayout @ulo:);
Co'tai'er c getCo'te't&a'e();
c.set=ayout(null);
*=a6el l. new *=a6el(:=a6el .:);
*=a6el l2 new *=a6el(:=a6el 2:);
*=a6el l0 new *=a6el(:=a6el 0:);
l..set?ac7grou'"(Color.WHITE); l..set8paDue(true);
l..set?ou'"s(-,-,.--,2-);
l2.set?ac7grou'"(Color.YELLOW); l2.set8paDue(true);
l2.set?ou'"s(2-,2-,.--,2-);
l0.set?ac7grou'"(Color.GREEN); l0.set8paDue(true);
l0.set?ou'"s(2-,2-,.--,2-);
c.a""(l.); c.a""(l2); c.a""(l0);
set5isi6le(true);
setDe(aultClose8peratio'(*#rame.EXIT_ON_CLOSE);
E'sets i getE'sets();
set+i,e(.2-Ci.le(tCi.right,2-Ci.6ottomCi.top);
!
public static void mai'(+tri'g34 args)
{
new Ex=ayout@ulo();
!
!
Maio/2009 http://www.lac.inpe.br/~rafael.santos 40
#utros componentes
(imos JLabels&
,uas a!ordagens/
So!reescrever m8todos
get{Maximum,Minimum,Preferred}Size()&
So!reescrever paintComponent()&
Maio/2009 http://www.lac.inpe.br/~rafael.santos 75
!riando 'ovos !omponentes 3rficos
5erdando de JComponent/
$lasse App
package ta'Dues;
import java.awt.Color;
import javax.swi'g.*#rame;
public class 9pp
{
public static void mai'(+tri'g34 args)
{
9re'a are'a new 9re'a(1--,2--);
are'a.a"icio'a)a'Due(new )a'Due(.--,2--, -,Color.BLUE));
are'a.a"icio'a)a'Due(new )a'Due(2--,2--, 2/,Color.RED));
are'a.a"icio'a)a'Due(new )a'Due(2G-,01-, H-,Color.GREEN));
are'a.a"icio'a)a'Due(new )a'Due(2/-, /-,./G,Color.YELLOW));
*#rame ( new *#rame(:)a'Dues:);
(.getCo'te't&a'e().a""(are'a);
(.pac7();
(.set5isi6le(true);
(.setDe(aultClose8peratio'(*#rame.EXIT_ON_CLOSE);
!
!
Maio/2009 http://www.lac.inpe.br/~rafael.santos 108
Tan4ues
Maio/2009 http://www.lac.inpe.br/~rafael.santos 109
Tan4ues
Sugestes de pro"etos
Maio/2009 http://www.lac.inpe.br/~rafael.santos 110
'%emplo/ $elofane
Maio/2009 http://www.lac.inpe.br/~rafael.santos 111
!elofane
$lasse Celofane
package celo(a'e;
import javax.swi'g.*#rame;
public class Celo(a'e
{
public static void mai'(+tri'g34 args)
{
9reaDeDese'ho Vrea new 9reaDeDese'ho(B--,1--);
*#rame ( new *#rame(:Celo(a'e:);
(.getCo'te't&a'e().a""(Vrea);
(.pac7();
(.set5isi6le(true);
(.setDe(aultClose8peratio'(*#rame.EXIT_ON_CLOSE);
!
!
Maio/2009 http://www.lac.inpe.br/~rafael.santos 127
!elofane
Maio/2009 http://www.lac.inpe.br/~rafael.santos 128
!elofane
Maio/2009 http://www.lac.inpe.br/~rafael.santos 129
!elofane
Sugestes de pro"etos
Maio/2009 http://www.lac.inpe.br/~rafael.santos 130
'%emplo/ A*urio
Maio/2009 http://www.lac.inpe.br/~rafael.santos 131
"4urio
$lasse Peixe
(e"a o Slide OB3
Maio/2009 http://www.lac.inpe.br/~rafael.santos 133
"4urio
public void move()
{
x $ spee";
if (x A $w()
{
x wa;
y (int)(>ath.random()%(ha$h());
!
!
protected void pai't(Graphics2D g2")
{
g2"."rawEmage((ish.getEmage(),x,y,null);
!
!
$lasse Peixe
Maio/2009 http://www.lac.inpe.br/~rafael.santos 134
"4urio
$lasse ComponenteAquario
package aDuario;
import java.awt.%;
import java.awt.eve't.%;
import javax.swi'g.%;
public class Compo'e'te9Duario extends *Compo'e't implements 9ctio'=iste'er
{
private &eixe vermelho;
private &eixe amarelo;
private EmageEco' 6ac7grou'";
private )imer tt;
public Compo'e'te9Duario()
{
6ac7grou'" new EmageEco'(:aDuarium[6g.jpg:);
Dime'sio' area new Dime'sio'(6ac7grou'".getEco'Ri"th(),
6ac7grou'".getEco'Leight());
vermelho new &eixe(:re"[(ish.p'g:,area,2);
amarelo new &eixe(:yellow[(ish.p'g:,area,/./();
tt new )imer(2-,this);
tt.setCoalesce(true);
tt.start();
!
(e"a o Slide OB3
Maio/2009 http://www.lac.inpe.br/~rafael.santos 135
"4urio
$lasse ComponenteAquario
protected void pai'tCompo'e't(Graphics g)
{
Graphics2D g2" (Graphics2D)g;
g2"."rawEmage(6ac7grou'".getEmage(),-,-,null);
vermelho.pai't(g2");
amarelo.pai't(g2");
!
public void actio'&er(orme"(9ctio'Eve't e)
{
vermelho.move(); amarelo.move(); repai't();
!
!
Maio/2009 http://www.lac.inpe.br/~rafael.santos 136
"4urio
$lasse Aquario
package aDuario;
import javax.swi'g.*9pplet;
public class 9Duario extends *9pplet
{
private Compo'e'te9Duario c;
public void i'it()
{
c new Compo'e'te9Duario();
a""(c);
resi,e(G2-,/2-);
!
!
Maio/2009 http://www.lac.inpe.br/~rafael.santos 137
"4urio
+a classe Peixe/
+a classe ComponenteAquario/
public Fecta'gle getE'volve'te()
{
return new Fecta'gle(x,y,w(,h();
!
public void actio'&er(orme"(9ctio'Eve't e)
{
vermelho.move(); amarelo.move();
repai't(vermelho.getE'volve'te());
repai't(amarelo.getE'volve'te());
!
Maio/2009 http://www.lac.inpe.br/~rafael.santos 138
Jinali9ando&&&
Maio/2009 http://www.lac.inpe.br/~rafael.santos 139
5imos
1uita coisa3
Java Vutorial/
-ttp/00"ava&sun&com0docs0!ooXs0tutorial0inde%&-tml
Faterial em -ttp/00111&lac&inpe&!r02rafael&santos
Maio/2009 http://www.lac.inpe.br/~rafael.santos 144
%efer&ncias
'%emplos/ scroller&
fivedots&coe&psu&ac&t-02ad0"g0
Maio/2009 http://www.lac.inpe.br/~rafael.santos 147
!rigado3
PerguntasL