Está en la página 1de 69

Interfaces grficas con Swing

Java y Servicios Web I Master en Ingeniera Matemtica Manuel Montenegro Dpto. Sistemas Informticos y Computacin
Desp. 467 (Mat) montenegro@fdi.ucm.es

Introd cci!n

Swing es una biblioteca e interfaces grficas e usuario (!"I) para #a$a. %iene inclui a con el entorno e esarrollo e #a$a (#D&). '(tien e a otra librer)a grfica ms antigua llama a *+,. -a.uetes/

javax.swing java.awt java.awt.event

*lternati$as/ S+, (0ttp/11222.eclipse.org1s2t1)


8. Interfaces grficas con Swing 2

28/Mayo/2012

#ontenidos

%entanas Componentes 3ayout Managers Mane4o e e$entos Cua ros e ilogo pre efini os Dibu4o e grficos *r.uitectura M%C

28/Mayo/2012

8. Interfaces grficas con Swing

"

#reaci!n de ventanas

3a clase JFrame proporciona operaciones para manipular $entanas. Constructores/


JFrame() JFrame(String titulo) 'stablecer su tama7o. 'stablecer la accin e cierre. 8acerla $isible.

"na $e5 crea o el ob4eto e $entana6 0ay .ue/


28/Mayo/2012

8. Interfaces grficas con Swing

#reaci!n de ventanas
import javax.swing.*; public class entana!est " public static void main(String#$ args) " JFrame f % new JFrame(&!itulo de ventana&); f.setSi'e(())* +))); f.set,efault-lose.peration(JFrame./01!2.32-4.S/); f.set isible(true); 5 5

*cciones e cierre/

JFrame./01!2.32-4.S// *ban ona aplicacin. JFrame.,1S6.S/2.32-4.S// 3ibera los recursos asocia os a la $entana. JFrame.,.23.!71382.32-4.S// 9o 0ace na a. JFrame.71,/2.32-4.S// Cierra la $entana6 sin liberar sus recursos.
8. Interfaces grficas con Swing %

28/Mayo/2012

#reaci!n de ventanas

28/Mayo/2012

8. Interfaces grficas con Swing

&

#reaci!n de ventanas

's usual e(ten er la clase JFrame6 y reali5ar las operaciones e iniciali5acin en su constructor.

public class 9i entana extends JFrame " public 9i entana() " super(&!itulo de ventana&); setSi'e(())* +))); set,efault-lose.peration(JFrame./01!2.32-4.S/); 5 5
public class entana!est " public static void main(String#$ args) " 9i entana v % new 9i entana(); v.set isible(true); 5 5
28/Mayo/2012 8. Interfaces grficas con Swing '

#ontenidos

%entanas Componentes 3ayout Managers Mane4o e e$entos Cua ros e ilogo pre efini os Dibu4o e grficos *r.uitectura M%C

28/Mayo/2012

8. Interfaces grficas con Swing

#om)onentes de na ventana
JButton JLabel JTextField JCheckBox JRadioButton

,ras crear uno e estos componentes con new6 0a e a7a irse al content6ane e la $entana correspon iente me iante su m:to o add.
8. Interfaces grficas con Swing (

28/Mayo/2012

*+adir com)onentes
public class 9i entana extends JFrame " public 9i entana() " super(&!itulo de ventana&); setSi'e(())* +))); set,efault-lose.peration(JFrame./01!2.32-4.S/); -ontainer cp % get-ontent6ane(); cp.set4a:out(new Flow4a:out()); J4abel eti;ueta % new J4abel(&3ombre< &); J!extField texto % new J!extField(=)); J>utton boton % new J>utton(&Saludar&); cp.add(eti;ueta); cp.add(texto); cp.add(boton); 5 5

28/Mayo/2012

8. Interfaces grficas con Swing

10

*+adir com)onentes

28/Mayo/2012

8. Interfaces grficas con Swing

11

#ontenidos

%entanas Componentes 3ayout Managers Mane4o e e$entos Cua ros e ilogo pre efini os Dibu4o e grficos *r.uitectura M%C

28/Mayo/2012

8. Interfaces grficas con Swing

12

Layout Managers

'n #a$a no es 0abitual in icar e(pl)citamente la posicin e los componentes e la interfa5 entro e la $entana. 3os layout managers se encargan e colocar los componentes e la interfa5 e usuario en la $entana contene ora. 'specifican la posicin y el tama7o e ic0os componentes.

Flow4a:out 8rid4a:out >order4a:out 8rid>ag4a:out ?

28/Mayo/2012

8. Interfaces grficas con Swing

1"

FlowLayout

Coloca los elementos uno a continuacin e otro6 e manera similar a la colocacin e palabras en un procesa or e te(tos. M:to os/

set@ligment(int alineacion) set7gap(int separacion) set gap(int separacion)

28/Mayo/2012

8. Interfaces grficas con Swing

1$

GridLayout

Coloca los componentes e la interfa5 en forma e re4illa. 'l or en en .ue se a7a an los componentes etermina su posicin en la re4illa. Constructor/

8rid4a:out(int filas* int columnas) set7gap(int separacion) set gap(int separacion)

M:to os/

28/Mayo/2012

8. Interfaces grficas con Swing

1%

GridLayout
public class 9i entana= extends JFrame " public 9i entana=() " super(&!itulo de ventana&); setSi'e(())* +))); set,efault-lose.peration(JFrame./01!2.32-4.S/); -ontainer cp % get-ontent6ane(); 8rid4a:out gl % new 8rid4a:out((*+); gl.set7gap(A); gl.set gap(A); cp.set4a:out(gl); for(int i % B; i C% D; iEE) " cp.add(new J>utton(String.value.f(i))); 5 cp.add(new J>utton(&*&)); cp.add(new J>utton(&)&)); cp.add(new J>utton(&F&)); 5 5
28/Mayo/2012 8. Interfaces grficas con Swing 1&

GridLayout

28/Mayo/2012

8. Interfaces grficas con Swing

1'

BorderLayout

Coloca y cambia e tama7o sus componentes para .ue se a4usten a los bor es y parte central e la $entana. M:to os/

set7gap(int separacion) set gap(int separacion)

*l a7a ir un elemento a la $entana6 0ay .ue especificar su colocacin/


J>utton b % new J>utton(...); get-ontent6ane().add(b* >order4a:out./@S!)

28/Mayo/2012

8. Interfaces grficas con Swing

18

Interfaces com),e-as. JPanel

"n panel es un componente con un layout manager propio6 y .ue pue e contener $arios componentes en su interior. Constructor/

J6anel() void set4a:out(4a:out9anager lm) void add(J-omponent componente) ?

M:to os/

28/Mayo/2012

8. Interfaces grficas con Swing

1(

Interfaces com),e-as. JPanel

28/Mayo/2012

8. Interfaces grficas con Swing

20

Interfaces com),e-as. JPanel

!ri 3ayout ;lo23ayout ;lo23ayout

28/Mayo/2012

8. Interfaces grficas con Swing

21

Interfaces com),e-as. JPanel


public 9i entana+() " super(&@Gadir usuario&); set,efault-lose.peration(JFrame./01!2.32-4.S/); HH 6anel de fecIa J6anel panelFecIa % new J6anel(); panelFecIa.set4a:out(new Flow4a:out()); panelFecIa.add(new J!extField(=)); panelFecIa.add(new J4abel(&H&)); panelFecIa.add(new J!extField(=)); panelFecIa.add(new J4abel(&H&)); panelFecIa.add(new J!extField(=)); HH 6anel de datos J6anel panel,atos % new J6anel(); 8rid4a:out gl % new 8rid4a:out(+*=*)*A); panel,atos.set4a:out(gl); panel,atos.add(new J4abel(&3ombre<&)); panel,atos.add(new J!extField(B))); panel,atos.add(new J4abel(&,31<&)); panel,atos.add(new J!extField(B))); panel,atos.add(new J4abel(&FecIa de nacimiento< &)); panel,atos.add(panelFecIa); ?

28/Mayo/2012

8. Interfaces grficas con Swing

22

Interfaces com),e-as. JPanel


? HH 6anel de botones J6anel panel>otones % new J6anel(); panel>otones.set4a:out(new Flow4a:out()); panel>otones.add(new J>utton(&@ceptar&)); panel>otones.add(new J>utton(&-ancelar&)); -ontainer cp % get-ontent6ane(); cp.add(panel,atos* >order4a:out.-/3!/J); cp.add(panel>otones* >order4a:out.S.K!7); 5

28/Mayo/2012

8. Interfaces grficas con Swing

2"

Interfaces com),e-as. GridBagLayout


Ms fle(ible .ue 8rid4a:out Ca a componente 0a e tener asocia o un ob4eto e la clase 8rid>ag-onstraints. 3a asociacin se pro ucir en el m:to o add.

J>utton b % new J>utton(L@ceptarM); 8rid>ag-onstraints gbc % new 8rid>ag-onstraints(...); get-ontent6ane().add(b* gbc);


28/Mayo/2012 8. Interfaces grficas con Swing 2$

GridBagConstraints

*tributos p<blicos/

int gridx* grid: int gridwidtI* gridIeigIt double weigItx* weigIt: int fill int ancIor 1nsets insets int ipadx* ipad:

-ue en ser iniciali5a os en el constructor.

28/Mayo/2012

8. Interfaces grficas con Swing

2%

GridBagConstraints

*tributos p<blicos/

int gridx* grid:

28/Mayo/2012

8. Interfaces grficas con Swing

2&

GridBagConstraints

*tributos p<blicos/

int gridwidtI* gridIeigIt

gridwidth = 2 gridheight = 2

28/Mayo/2012

8. Interfaces grficas con Swing

2'

GridBagConstraints

*tributos p<blicos/

double weigItx* weigIt:

weightx =
28/Mayo/2012

!"
8. Interfaces grficas con Swing

weightx = "!"
28

GridBagConstraints

*tributos p<blicos/

int fill 8rid>ag4a:out.7.J1N.3!@4 8rid>ag4a:out. /J!1-@4 8rid>ag4a:out.>.!7

-ue e ser/

28/Mayo/2012

8. Interfaces grficas con Swing

2(

GridBagConstraints

*tributos p<blicos/

int ancIor

28/Mayo/2012

8. Interfaces grficas con Swing

"0

GridBagConstraints

*tributos p<blicos/

1nsets insets

insets = new #nsets$ "% 2"%

"% 2"&

28/Mayo/2012

8. Interfaces grficas con Swing

"1

GridBagConstraints

*tributos p<blicos/

int padx* int pad:

'specifican cunto espacio a7a ir a la anc0ura1altura m)nima e los componentes.

28/Mayo/2012

8. Interfaces grficas con Swing

"2

#onstr ctores de interfaces

-ermiten construir interfaces e usuario interacti$amente. '4emplo/ Netbeans (netbeans.org)

28/Mayo/2012

8. Interfaces grficas con Swing

""

#ontenidos

%entanas Componentes 3ayout Managers Mane4o e e$entos Cua ros e ilogo pre efini os Dibu4o e grficos *r.uitectura M%C

28/Mayo/2012

8. Interfaces grficas con Swing

"$

Mane-o de eventos

"n e$ento es un suceso .ue ocurre como consecuencia e la interaccin el usuario con la interfa5 grfica.

-ulsacin e un botn. Cambio el conteni o en un cua ro e te(to. Desli5amiento e una barra. *cti$acin e un J-IecO>ox. Mo$imiento e la $entana.

28/Mayo/2012

8. Interfaces grficas con Swing

"%

/ ,saci!n de n bot!n

3a clase J>utton tiene un m:to o/

void add@ction4istener(@ction4istener l)

=ue especifica el ob4eto (mane4a or e e$ento) .ue se encargar e tratar el e$ento e pulsacin el botn. 'ste ob4eto 0a e interpretar la interfa5 @ction4istener (pa.uete java.awt.event)

public interface @ction4istener " void action6erformed(@ction/vent e) 5

28/Mayo/2012

8. Interfaces grficas con Swing

"&

/ ,saci!n de n bot!n

Cuan o el usuario pulse el botn6 se llamar al m:to o action6erformed e to os los mane4a ores e e$entos .ue se 0ayan registra o.

public class 9anejador implements @ction4istener " public void action6erformed(@ction/vent e) " ... 5 Informaci!n sobre e, evento 5

M:to os e *ction'$ent/

public .bject getSource() public int get9odifiers()


8. Interfaces grficas con Swing "'

28/Mayo/2012

0-em),o
public class >oton entana extends JFrame " public >oton entana() " super(&>otPn&); setSi'e(=))*B))); set,efault-lose.peration(JFrame./01!2.32-4.S/); -ontainer cp % get-ontent6ane(); cp.set4a:out(new Flow4a:out()); J>utton boton % new J>utton(&Q6RlsameS&); boton.add@ction4istener(new /vento>oton6ulsado()); cp.add(boton); 5 5

28/Mayo/2012

8. Interfaces grficas con Swing

"8

0-em),o
public class /vento>oton6ulsado implements @ction4istener " public void action6erformed(@ction/vent e) " S:stem.out.println(LQ8raciasSM); 5 5

28/Mayo/2012

8. Interfaces grficas con Swing

"(

0-em),o
public class /vento>oton6ulsado implements @ction4istener " public void action6erformed(@ction/vent e) " J>utton boton % (J>utton) e.getSource(); boton.set!ext(&Q8raciasS&); 5 5

28/Mayo/2012

8. Interfaces grficas con Swing

$0

*cceso a com)onentes de ,a interfa1

28/Mayo/2012

8. Interfaces grficas con Swing

$1

*cceso a com)onentes de ,a interfa1


public class /ventoSaludo implements @ction4istener " public void action6erformed(@ction/vent e) " 5 5

>Cmo acce o al ob4eto JTextField?

28/Mayo/2012

8. Interfaces grficas con Swing

$2

/osibi,idad 1
public class /ventoSaludo implements @ction4istener " private J!extField cuadro!exto; public /ventoSaludo(J!extField cuadro!exto) " tIis.cuadro!exto % cuadro!exto; 5 public void action6erformed(@ction/vent e) " J.ption6ane.sIow9essage,ialog(null* &Q7ola* & E cuadro!exto.get!ext() E &S&); 5 5

28/Mayo/2012

8. Interfaces grficas con Swing

$"

/osibi,idad 1
public class 9i entana extends JFrame " public 9i entana() " super(&!itulo de ventana&); setSi'e(())* +))); set,efault-lose.peration(JFrame./01!2.32-4.S/); set4a:out(new Flow4a:out()); -ontainer cp % get-ontent6ane(); cp.add(new J4abel(&3ombre <&)); J!extField texto % new J!extField(=)); cp.add(texto); J>utton botonSaludo % new J>utton(&Saludar&); cp.add(botonSaludo); botonSaludo.add@ction4istener(new /ventoSaludo(texto)); 5 5

28/Mayo/2012

8. Interfaces grficas con Swing

$$

/osibi,idad 2
public class 9i entana extends JFrame " private J!extField cuadro!exto; class /ventoSaludo implements @ction4istener " public void action6erformed(@ction/vent e) " J.ption6ane.sIow9essage,ialog(null* &Q7ola* & E cuadro!exto.get!ext() E &S&); 5 5 public 9i entana() " ? cuadro!exto % new J!extField(=)); cp.add(cuadro!exto); ? botonSaludo.add@ction4istener(new /ventoSaludo()); 5 5

28/Mayo/2012

8. Interfaces grficas con Swing

$%

/osibi,idad "
public class 9i entana extends JFrame implements @ction4istener " private J!extField cuadro!exto; public void action6erformed(@ction/vent e) " J.ption6ane.sIow9essage,ialog(null* &Q7ola* & E cuadro!exto.get!ext() E &S&); 5 public 9i entana() " ? cuadro!exto % new J!extField(=)); cp.add(cuadro!exto); ? botonSaludo.add@ction4istener(tIis); 5 5

28/Mayo/2012

8. Interfaces grficas con Swing

$&

0ventos en n JTextField

-aret4istener/ Cambios en la posicin el cursor.

void caretKpdate(-aret/vent e) void cIangedKpdate(,ocument/vent e) void insertKpdate(,ocument/vent e) void removeKpdate(,ocument/vent e)

,ocument4istener/ Cambios en el te(to.


J!extField text % ...; text.add-aret4istener(...); text.get,ocument().add,ocument4istener(...);

28/Mayo/2012

8. Interfaces grficas con Swing

$'

0ventos en na ventana

Tindow4istener

void void void void void void void

window@ctivated(Tindow/vent e) window-losed(Tindow/vent e) window-losing(Tindow/vent e) window,eactivated(Tindow/vent e) window,eiconified(Tindow/vent e) window1conified(Tindow/vent e) window.pened(Tindow/vent e)

28/Mayo/2012

8. Interfaces grficas con Swing

$8

0ventos de rat!n y de tec,ado

9ouse4istener/ -ulsaciones e botn6 entra as y sali as el puntero en un componente. 9ouse9otion4istener/ Mo$imientos el ratn entro e un componente. 9ouseTIeel4istener/ Mo$imientos e la rue a central e un ratn. Ue:4istener/ -ulsaciones e teclas.

28/Mayo/2012

8. Interfaces grficas con Swing

$(

#ontenidos

%entanas Componentes 3ayout Managers Mane4o e e$entos Cua ros e ilogo pre efini os Dibu4o e grficos *r.uitectura M%C

28/Mayo/2012

8. Interfaces grficas con Swing

%0

# adros de di,ogo )redefinidos

3a clase J.ption6ane proporciona m:to os e utili a para mostrar $entanas e a$iso y e confirmacin estn ar.

void sIow9essage,ialog(-omponent padre* .bject mensaje* String titulo entana* int tipo9ensaje)

28/Mayo/2012

8. Interfaces grficas con Swing

%1

# adros de di,ogo )redefinidos

3a clase J.ption6ane proporciona m:to os e utili a para mostrar $entanas e a$iso y e confirmacin estn ar.

String sIow1nput,ialog(-omponent padre* .bject mensaje* .bject valor,efecto)

28/Mayo/2012

8. Interfaces grficas con Swing

%2

# adros de di,ogo )redefinidos

3a clase J.ption6ane proporciona m:to os e utili a para mostrar $entanas e a$iso y e confirmacin estn ar.

int sIow-onfirm,ialog(-omponent padre* .bject mensaje* String titulo* int tipo.pciones* int tipo9ensaje)

28/Mayo/2012

8. Interfaces grficas con Swing

%"

#ontenidos

%entanas Componentes 3ayout Managers Mane4o e e$entos Cua ros e ilogo pre efini os Dibu4o e grficos *r.uitectura M%C

28/Mayo/2012

8. Interfaces grficas con Swing

%$

3ib -ar grficos

Ca a componente tiene un m:to o llama o paint-omponent6 .ue se encarga e pintarlo en pantalla. -ara reali5ar un ibu4o efini o por el programa or6 basta con 0ere ar e un componente (normalmente un J6anel)6 y sobreescribir su m:to o paint-omponent.

void paint-omponent(8rapIics g)

28/Mayo/2012

8. Interfaces grficas con Swing

%%

3ib -ar grficos

M:to os e 8rapIics/

void draw6ol:gon(int#$ x* int#$ :* int puntos) void drawJect(int x* int :* int ancIo* int alto) void fillJect(int x* int :* int ancIo* int alto) void draw.val(int x* int :* int ancIo* int alto) void fill.val(int x* int :* int ancIo* int alto) void drawString(String cad* int x* int :) void set-olor(-olor c) void setFont(Font f)
8. Interfaces grficas con Swing %&

28/Mayo/2012

0-em),o
public class 6anelSol extends J6anel " public void paint-omponent(8rapIics g) " g.set-olor(-olor..J@38/); g.fill.val(B))*B))*=))*=))); for (double d % ); d C =*9atI.61; d E% ).B) " int x/nd % (int) (=))EBA)*9atI.cos(d)); int :/nd % (int) (=))EBA)*9atI.sin(d)); g.draw4ine(=))* =))* x/nd* :/nd); 5 g.set-olor(-olor.>4@-U); g.draw@rc(BA)* BA)* B))* B))* =+)* V)); g.fill.val(BA)* BA)* =)* =)); g.fill.val(=+)* BA)* =)* =)); 5 5

28/Mayo/2012

8. Interfaces grficas con Swing

%'

0-em),o
public class entanaSol extends JFrame " public entanaSol() " ? -ontainer cp % get-ontent6ane(); cp.add(new 6anelSol()); 5 5

28/Mayo/2012

8. Interfaces grficas con Swing

%8

*4n 5ay ms

0ttp/11 o2nloa .4a$a.net14a$a es@top1s2ingsetA1S2ingSetA.4nlp

28/Mayo/2012

8. Interfaces grficas con Swing

%(

*4n 5ay ms

0ttp/11222.particle.@t0.se1Bfmi1@urs1-0ysicsSimulation13ectures1C7*1s2ingDesign.0tml 28/Mayo/2012 8. Interfaces grficas con Swing &0

#ontenidos

%entanas Componentes 3ayout Managers Mane4o e e$entos Cua ros e ilogo pre efini os Dibu4o e grficos *r.uitectura M%C

28/Mayo/2012

8. Interfaces grficas con Swing

&1

*r6 itect ra M7#


M%C D Mo elo E %ista E Controla or 's un patrn e ise7o .ue separa los atos e la aplicacin6 la interfa5 e usuario6 y la lgica e negocio.
#ontro,ador

7ista

Mode,o

28/Mayo/2012

8. Interfaces grficas con Swing

&2

*r6 itect ra M7#

'4emplo/ ' icin e te(tos.


#ontro,ador
class J!extField

7ista
class J!extField

Mode,o
interfa' ,ocument '(i Texto)

28/Mayo/2012

8. Interfaces grficas con Swing

&"

*r6 itect ra M7#

'4emplo/ 3istas
#ontro,ador

7ista
class J4ist

Mode,o
interfa' 4ist9odel *'(eta+yste,s)% Color!R-./% *'(eta0orks)% Color!BL1-/% 2

28/Mayo/2012

8. Interfaces grficas con Swing

&$

*r6 itect ra M7#

-reparacin/ 'l mo elo tiene una lista e $istas. Ca a $e5 .ue 0aya un cambio e mo elo6 :ste a$isar a to as las $istas para .ue se actualicen. Cuan o se crea una $ista6 :sta a$isa al mo elo para .ue la a7a a a su lista.
#ontro,ador

7ista

Mode,o
&%

28/Mayo/2012

8. Interfaces grficas con Swing

*r6 itect ra M7#

-aso F/ Cuan o el controla or recibe la accin el usuario6 en$)a un mensa4e al mo elo para mo ificarlo.

#ontro,ador

7ista

Mode,o
&&

28/Mayo/2012

8. Interfaces grficas con Swing

*r6 itect ra M7#

-aso G/ Cuan o el mo elo se mo ifica6 en$)a un mensa4e a to as las $istas .ue tenga registra as.

#ontro,ador

7ista

Mode,o
&'

28/Mayo/2012

8. Interfaces grficas con Swing

*r6 itect ra M7#

-aso A/ 3a $ista se actuali5a con los cambios reali5a os en el mo elo

#ontro,ador

7ista

Mode,o
&8

28/Mayo/2012

8. Interfaces grficas con Swing

8eferencias

-. Deitel6 8. Deitel Java. How to Program (Ht0 ' ition) Caps. F46 FI y GI J. 'c@el Thinking in Java (Ar ' ition) Cap. F4 #. Ku@o2s@i The definitive guide to Java Swing

28/Mayo/2012

8. Interfaces grficas con Swing

&(

También podría gustarte