modulo05 awt swing

69
AWT e Swing AWT e Swing Alessandro Cerqueira Alessandro Cerqueira - - 20/8/2007 20/8/2007 M M ó ó dulo V dulo V AWT e Swing AWT e Swing Objetivo Apresentar como Implementar Interfaces Gráficas em Java Utilizando AWT e Swing

Upload: adlin2009

Post on 12-Jun-2015

758 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Modulo05 AWT Swing

AWT e Swing

AWT e Swing ––

Alessandro Cerqueira

Alessandro Cerqueira --20

/8/200

720

/8/200

7

MMóódulo Vdulo VAWT e SwingAWT e Swing

ObjetivoApresentar como Implementar

Interfaces Gráficas em Java

Utilizando

AWT e Swing

Page 2: Modulo05 AWT Swing

2AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

Abstract Abstract WindowingWindowing ToolkitToolkit

•• Pacote contendo classes para implementaPacote contendo classes para implementaçção ão de interfaces grde interfaces grááficas em Javaficas em Java

•• Casamento da ProgramaCasamento da Programaçção Orientada a ão Orientada a Eventos com a ProgramaEventos com a Programaçção Orientada a ão Orientada a Objetos em JavaObjetos em Java

Page 3: Modulo05 AWT Swing

3AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

EstratEstratéégia de Implementagia de Implementaççãoão(Regra 1)(Regra 1)

•• Para cada tipo de janela na aplicaPara cada tipo de janela na aplicaçção deveremos codificar ão deveremos codificar uma classe em Java que deveruma classe em Java que deveráá ser especializaser especializaçção da ão da classe classe javajava..awtawt.Frame.Frame

•• Alguns mAlguns méétodos em Frame:todos em Frame:–– setResizablesetResizable((booleanboolean modificavelmodificavel))

–– setBackgroundsetBackground((ColorColor cor)cor)

•• ““ ConstantesConstantes ”” definidas na classe definidas na classe ColorColor: : ColorColor .. blackblack , , ColorColor .. blueblue , , ColorColor .. cyancyan , , ColorColor .. darkGraydarkGray , , ColorColor .. graygray , , ColorColor .. greengreen , , ColorColor .. lightGraylightGray , , ColorColor .. magentamagenta , , ColorColor .. orangeorange , , ColorColor .. pinkpink , , ColorColor .. redred , , ColorColor .. whitewhite , , ColorColor .. yellowyellow ..

–– setLocationsetLocation(int x,int y)(int x,int y)

–– setBoundssetBounds(int x,int y,int largura,int altura)(int x,int y,int largura,int altura)

–– setSizesetSize(int largura, int altura)(int largura, int altura)

Page 4: Modulo05 AWT Swing

4AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

EstratEstratéégia de Implementagia de Implementaççãoão(Regra 1)(Regra 1)

•• Para que uma classe seja especializaPara que uma classe seja especializaçção de ão de outra, devemos a palavra reservada outra, devemos a palavra reservada extendsextends

publicpublic classclass Janela Janela extendsextends FrameFrame

•• Todas as classes em Java são direta ou Todas as classes em Java são direta ou indiretamente especializaindiretamente especializaçções da classe ões da classe javajava..langlang..ObjectObject

Page 5: Modulo05 AWT Swing

5AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

ExemploExemplo(Regra 1)(Regra 1)

packagepackage face;face;

importimport javajava..awtawt.*;.*;

publicpublic classclass JanelaJanela extendsextends FrameFrame

{{// Construtor da classe Janela// Construtor da classe Janelapublicpublic Janela(String titulo, int Janela(String titulo, int posXposX, int , int posYposY) ) {{

//Chamada ao construtor definido na classe Frame//Chamada ao construtor definido na classe Framesuper(titulo); super(titulo); // determino que a janela não poder// determino que a janela não poderáá ser redimensionadaser redimensionadathisthis..setResizablesetResizable((falsefalse););// determino o tamanho da janela// determino o tamanho da janelathisthis..setSizesetSize(100,100);(100,100);// determino a posi// determino a posiçção da janelaão da janelathisthis..setLocationsetLocation((posXposX,,posYposY); ); // torno a janela vis// torno a janela visíívelvelthisthis..setVisiblesetVisible((truetrue); );

}}}}

Page 6: Modulo05 AWT Swing

6AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

ExemploExemplo(Regra 1)(Regra 1)

packagepackage controle;controle;

importimport face.*;face.*;

publicpublic classclass ProgramaPrograma

{{publicpublic staticstatic voidvoid mainmain(String (String argsargs[]) []) {{

// Instancio dois objetos Janela// Instancio dois objetos JanelaJanela j1 = new Janela("Janela 1",50,50); Janela j1 = new Janela("Janela 1",50,50); Janela j2 = new Janela("Janela 2",200,100); Janela j2 = new Janela("Janela 2",200,100);

}}}}

Page 7: Modulo05 AWT Swing

7AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

EstratEstratéégia de Implementagia de Implementaççãoão(Regra 2)(Regra 2)

•• Para cada elemento grPara cada elemento grááfico (menu, botões, rfico (menu, botões, róótulos, etc.) tulos, etc.) que se deseja adicionar que se deseja adicionar àà Janela, deveremos adicionar um Janela, deveremos adicionar um atributo na classe para o seu mapeamento. Dentro de atributo na classe para o seu mapeamento. Dentro de AWT existem uma sAWT existem uma séérie de classes que implementam os rie de classes que implementam os COMPONENTES COMPONENTES grgrááficos que podem existir na janela.ficos que podem existir na janela.

•• Ex.Ex.–– ButtonButton, , LabelLabel, , MenuBarMenuBar, Menu, , Menu, CanvasCanvas, , CheckBoxCheckBox, , TextFieldTextField, ,

TextAreaTextArea, etc., etc.

•• Estes atributos devem ser instanciados e adicionados no Estes atributos devem ser instanciados e adicionados no construtor da Janela. Para a adiconstrutor da Janela. Para a adiçção, devemos utilizar o ão, devemos utilizar o mméétodo todo addadd de de FrameFrame

Page 8: Modulo05 AWT Swing

8AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

ExemploExemplo(Regra 2)(Regra 2)

packagepackage face;face;

importimport javajava .. awtawt .*;.*;

publicpublic classclass JanelaJanela extendsextends FrameFrame{{

// Atributos da Classe// Atributos da Classeprivateprivate ButtonButton btOkbtOk ;;privateprivate ButtonButton btCancelabtCancela ;;privateprivate ButtonButton btAjudabtAjuda ;;

// Construtor// Construtorpublicpublic Janela(String titulo) Janela(String titulo) {{

// Chamada ao construtor de Frame// Chamada ao construtor de Framesuper(titulo);super(titulo);// Instancio um objeto da classe // Instancio um objeto da classe FontFont , declaro a vari, declaro a vari áávelvel// local // local fontePadrãofontePadrão e fae fa çço com que esta vario com que esta vari áável aponte vel aponte // para o novo objeto // para o novo objeto FontFont criadocriadoFontFont fontePadraofontePadrao = new = new FontFont ("(" TimesRomanTimesRoman", ", FontFont .BOLD, 14);.BOLD, 14);// determino o padrão de fonte para a janela// determino o padrão de fonte para a janelathisthis .. setFontsetFont (( fontePadraofontePadrao ); ); // Determino a cor de fundo da janela// Determino a cor de fundo da janelathisthis .. setBackgroundsetBackground (( ColorColor .WHITE); .WHITE);

continua...continua...

Page 9: Modulo05 AWT Swing

9AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

ExemploExemplo(Regra 2)(Regra 2)

continuacontinuaçção...ão...// Instancio um novo objeto // Instancio um novo objeto ButtonButton e fae fa çço com que o atributo o com que o atributo OkOk// da janela aponte para este novo // da janela aponte para este novo ButtonButtonthisthis .. btObtO kk = new = new ButtonButton ("(" OkOk"); "); // Instancio um novo objeto // Instancio um novo objeto ButtonButton e fae fa çço com que o atributoo com que o atributo// Cancela da janela aponte para este novo // Cancela da janela aponte para este novo ButtonButtonthisthis .. btCbtC ancelaancela = new = new ButtonButton ("Cancela"); ("Cancela"); // Instancio um novo objeto // Instancio um novo objeto ButtonButton e fae fa çço com que o atributoo com que o atributo// Ajuda da janela aponte para este novo // Ajuda da janela aponte para este novo ButtonButtonthisthis .. btAbtA judajuda = new = new ButtonButton ("Ajuda"); ("Ajuda"); // Adiciono o botão // Adiciono o botão OkOk àà Janela na região OESTEJanela na região OESTEthisthis .. addadd (( thisthis .. btObtO kk , , BorderLayoutBorderLayout .WEST);.WEST);// Adiciono o botão Cancela // Adiciono o botão Cancela àà Janela na região CENTROJanela na região CENTROthisthis .. addadd (( thisthis .. btCbtC ancelaancela , , BorderLayoutBorderLayout .CENTER);.CENTER);// Adiciono o botão Ajuda // Adiciono o botão Ajuda àà Janela na região LESTEJanela na região LESTEthisthis .. addadd (( thisthis .. btAbtA judajuda , , BorderLayoutBorderLayout .EAST);.EAST);// Redimensiono o tamanho da Janela// Redimensiono o tamanho da Janelathisthis .. setSizesetSize (300,100); (300,100); // Torno a janela Vis// Torno a janela Vis íí velvelthisthis .. setVisiblesetVisible (( truetrue ); );

}}}}

Page 10: Modulo05 AWT Swing

10AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

ExemploExemplo(Regra 2)(Regra 2)

packagepackage controle;controle;

importimport face.*;face.*;

publicpublic classclass ProgramaPrograma

{{publicpublic staticstatic voidvoid mainmain(String (String argsargs[]) []) {{

Janela j = new Janela("Janela com Botões"); Janela j = new Janela("Janela com Botões"); }}

}}

Page 11: Modulo05 AWT Swing

11AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

ActionListenerActionListener•• 1 1 -- O botão foi pressionado.O botão foi pressionado.

•• 2 2 -- O objeto O objeto JButtonJButton sabe que foi peticionado, entretanto o csabe que foi peticionado, entretanto o cóódigo de adigo de açção de resposta não esta escrito na classe ão de resposta não esta escrito na classe JButtonJButton..

•• 3 3 -- Então o Botão faz o seguinte:Então o Botão faz o seguinte:

•• Ele vai notificar a alguEle vai notificar a alguéém que ele foi pressionado e vai pedir a este que execute a am que ele foi pressionado e vai pedir a este que execute a açção de resposta.ão de resposta.

•• 4 4 -- A notificaA notificaçção do ão do JButtonJButton e feita para um e feita para um LISTENERLISTENER, contudo o botão tem que saber quem e este , contudo o botão tem que saber quem e este listenerlistener previamente. Avisamos a previamente. Avisamos a ele atravele atravéés do ms do méétodo todo addActionListeneraddActionListener..

•• 5 Como o 5 Como o JButtonJButton vai notificar o vai notificar o ListenerListener??

•• SSóó hháá uma forma de comunicauma forma de comunicaçção entre os objetos: Envio de mensagem!ão entre os objetos: Envio de mensagem!

•• A mensagem que o botão manda chama se: A mensagem que o botão manda chama se: actionPerformedactionPerformed..

•• 6 6 -- Sabemos que a mensagem Sabemos que a mensagem ActionPerformedActionPerformed foi enviada, então o seu receptor deve executar o mfoi enviada, então o seu receptor deve executar o méétodo todo ActionPerformedActionPerformed..

•• 7 7 -- Então a classe do receptor deve ter um mEntão a classe do receptor deve ter um méétodo todo ActionPerformedActionPerformed codificadocodificado

•• Como garantimos que esta classe tem este mComo garantimos que esta classe tem este méétodo?todo?ActionListenerActionListener

•• <<INTERFACE>><<INTERFACE>>

•• Public void Public void actionPerformedactionPerformedJanelaPrincipalJanelaPrincipal

•• ......

•• Public void Public void actionPerformedactionPerformedRealizaRealizaççãoão

•• ImplementaImplementaççãoão

•• O mO méétodo todo AddActionListenerAddActionListener requer que o parâmetro seja uma implementarequer que o parâmetro seja uma implementaçção da interface ão da interface AddActionListenerAddActionListener; em outras palavra, a ; em outras palavra, a classe deve obrigatoriamente ter no cabeclasse deve obrigatoriamente ter no cabeççalho alho implementsActionListenerimplementsActionListener e codificar os me codificar os méétodos abstratos presentes nesta interface.todos abstratos presentes nesta interface.

•• 8 8 -- A interface A interface ActionslistenerActionslistener tem um tem um úúnico mnico méétodo abstrato: todo abstrato:

•• Public void Public void actionPerformedactionPerformed ((actionEventsactionEvents e);e);

•• Assim, a classe que implementar esta interface deverAssim, a classe que implementar esta interface deveráá ter este mter este méétodo.todo.

•• Uma Interface Uma Interface éé uma especializauma especializaçção de um ão de um SERVISERVIÇÇO O que pode serque pode ser

•• REALZADO REALZADO por uma ou mais classes.por uma ou mais classes.

Page 12: Modulo05 AWT Swing

12AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

EstratEstratéégia de Implementagia de Implementaççãoão(Regra 3)(Regra 3)

•• Se Se éé necessnecessáário monitorar e tratar eventos que ocorrem na janela, rio monitorar e tratar eventos que ocorrem na janela, então a sua classe deverentão a sua classe deveráá implementar uma ou mais Interfaces implementar uma ou mais Interfaces ListenerListener (dependendo do tipo de a(dependendo do tipo de açção a ser tratada)ão a ser tratada)

•• O conceito de interface em Java e na UML O conceito de interface em Java e na UML éé semelhante a uma semelhante a uma classe abstrata, que não possui atributos nem cclasse abstrata, que não possui atributos nem cóódigo de mdigo de méétodos, todos, descrevendo somente as assinaturas dos mdescrevendo somente as assinaturas dos méétodos que deverão ser todos que deverão ser codificados pelas classes que implementarem (realizarem) as codificados pelas classes que implementarem (realizarem) as interfaces.interfaces.

•• No pacote No pacote javajava..awtawt..eventevent encontramos uma sencontramos uma séérie de Interfaces rie de Interfaces ListenerListener que podem ser implementadas, como:que podem ser implementadas, como:–– ActionListenerActionListener: destinado a manipular os eventos padrão dos componentes : destinado a manipular os eventos padrão dos componentes

(ex. Botão pressionado).(ex. Botão pressionado).

–– MouseListenerMouseListener: destinado a manipular os eventos gerados pelo mouse sobre : destinado a manipular os eventos gerados pelo mouse sobre os componentes.os componentes.

–– KeyboardListenerKeyboardListener: destinado a manipular os eventos gerados pelo teclado : destinado a manipular os eventos gerados pelo teclado sobre os componentes.sobre os componentes.

Page 13: Modulo05 AWT Swing

13AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

EstratEstratéégia de Implementagia de Implementaççãoão(Regra 3)(Regra 3)

•• Toda interface Toda interface ListenerListener éé especializaespecializaçção de ão de javajava..utilutil..EventListenerEventListener..

•• Para que uma classe implemente uma interface, devemos Para que uma classe implemente uma interface, devemos utilizar a palavra reservada utilizar a palavra reservada implementsimplementspublicpublic classclass Janela Janela extendsextends Frame Frame

implementsimplements ActionListenerActionListener , , MouseListenerMouseListener

•• Para cada componente cujos eventos necessita ser Para cada componente cujos eventos necessita ser monitorados, deveremos enviar uma mensagem monitorados, deveremos enviar uma mensagem addXXXXListeneraddXXXXListener passando como parâmetro passando como parâmetro thisthis (ou seja, (ou seja, informando que o informando que o XXXXListenerXXXXListener dele dele éé a pra próópria janela).pria janela).

•• Quando ocorrer um evento sobre o componente, a janela Quando ocorrer um evento sobre o componente, a janela serseráá notificada e recebernotificada e receberáá um objeto eventoum objeto evento (especializa(especializaçção ão de de javajava..utilutil..EventObjectEventObject)) que descreve o evento ocorrido.que descreve o evento ocorrido.

Page 14: Modulo05 AWT Swing

14AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

EstratEstratéégia de Implementagia de Implementaççãoão(Regra 3)(Regra 3)

•• EstrututaEstrututa de Funcionamento:de Funcionamento:

–– Fonte (Fonte (sourcesourceobjectobject))

–– Evento (Evento (eventeventobjectobject))

–– Receptor de Receptor de Eventos (Eventos (eventeventlistenerlistener))

•• Um evento Um evento éé sempre gerado sempre gerado por apenas uma fonte.por apenas uma fonte.

•• VVáários receptores podem tratar rios receptores podem tratar

Fonte

evento

listenerlistener

listener

Page 15: Modulo05 AWT Swing

15AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

EstratEstratéégia de Implementagia de Implementaççãoão(Regra 3)(Regra 3)

•• Assim como hAssim como háá o o addXXXListeneraddXXXListener()() , temos tamb, temos tambéém o m o removeXXXListenerremoveXXXListener()()..

•• Hierarquia das classes de evento:Hierarquia das classes de evento:

•• Todas as classes estão definidas em Todas as classes estão definidas em javajava..awtawt..eventevent

ActionEvent AdjustmentEvent

ContainerEvent FocusEvent

MouseEvent KeyEvent

InputEvent WindowEvent

ComponentEvent ItemEvent TextEvent

AWTEvent

EventObject

Page 16: Modulo05 AWT Swing

16AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

EstratEstratéégia de Implementagia de Implementaççãoão(Regra 3)(Regra 3)

•• Eventos de Baixo NEventos de Baixo Níível: vel: –– Eventos indivisEventos indivisííveis, geralmente emitidos pelo sistema operacional, veis, geralmente emitidos pelo sistema operacional,

como: movimentacomo: movimentaçção do mouse, pressionamento e liberaão do mouse, pressionamento e liberaçção dos ão dos botões do mouse, pressionamento e liberabotões do mouse, pressionamento e liberaçção de teclas, mudanão de teclas, mudançça a do foco do teclado, ou mudando foco do teclado, ou mudançça do estado de uma janela.a do estado de uma janela.

Janela Janela éé ativada, desativada, minimizada ou ativada, desativada, minimizada ou fechadafechadaWindowEventWindowEvent

Componente ganha ou perde o foco do tecladoComponente ganha ou perde o foco do tecladoFocusEventFocusEvent

Botão do mouse Botão do mouse éé pressionado, solto, o mouse pressionado, solto, o mouse éémovimentado ou arrastadomovimentado ou arrastadoMouseEventMouseEvent

Tecla Tecla éé pressionada ou soltapressionada ou soltaKeyEventKeyEvent

Componente Componente éé redimensionado, movido, exibido ou redimensionado, movido, exibido ou escondidoescondidoComponentEventComponentEvent

Page 17: Modulo05 AWT Swing

17AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

EstratEstratéégia de Implementagia de Implementaççãoão(Regra 3)(Regra 3)

•• Eventos Semânticos: Eventos Semânticos: –– Eventos compostos de outros eventos de baixoEventos compostos de outros eventos de baixo--nníível, vel,

possivelmente emitidos pelo prpossivelmente emitidos pelo próóprio componente a partir da prio componente a partir da observaobservaçção dos eventos de baixoão dos eventos de baixo--nníível. vel. ÉÉ uma boa pruma boa práática tica de programade programaçção tratar apenas de eventos semânticos, para ão tratar apenas de eventos semânticos, para garantir a portabilidade do cgarantir a portabilidade do cóódigo Javadigo Java

Texto alterado (p.ex. caixa de texto)Texto alterado (p.ex. caixa de texto)TextEventTextEvent

Item selecionado dentre um conjunto de itens Item selecionado dentre um conjunto de itens (p.ex. (p.ex. checkboxcheckbox))ItemEventItemEvent

Novo valor escolhido entre uma faixa de valores Novo valor escolhido entre uma faixa de valores posspossííveis (p.ex. veis (p.ex. scrollbarscrollbar))AdjustmentEventAdjustmentEvent

Componente Componente fonte fonte sofre alguma asofre alguma açção padrão ão padrão (p.ex. botão pressionado)(p.ex. botão pressionado)ActionEventActionEvent

Page 18: Modulo05 AWT Swing

18AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

EstratEstratéégia de Implementagia de Implementaççãoão(Regra 3)(Regra 3)

•• Exemplo:Exemplo:–– ActionEventActionEvent (botão pressionado)(botão pressionado)

1.1. cursor do mouse entra na cursor do mouse entra na áárea retangular do botãorea retangular do botão

2.2. botão do mouse botão do mouse éé pressionadopressionado

3.3. cursor do mouse pode sair e entrar na cursor do mouse pode sair e entrar na áárea retangular do botãorea retangular do botão

4.4. botão do mouse botão do mouse éé liberado dentro da liberado dentro da áárea retangular do botãorea retangular do botão

•• AdaptadoresAdaptadores––Provêm implementaProvêm implementaçções vazias ( { } ) para todos os ões vazias ( { } ) para todos os

mméétodos de uma interface todos de uma interface ListenerListener

FocusAdapterFocusAdapterFocusListenerFocusListener

ComponentAdapterComponentAdapterComponentListenerComponentListener

KeyAdapterKeyAdapterKeyListenerKeyListener

MouseMotionAdapterMouseMotionAdapterMouseMotionListenerMouseMotionListener

MouseAdapterMouseAdapterMouseListenerMouseListener

WindowAdapterWindowAdapterWindowListenerWindowListener

Page 19: Modulo05 AWT Swing

19AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

ExemploExemplo(Regra 3)(Regra 3)

•• Pegue o exemplo da regra 2 e faPegue o exemplo da regra 2 e façça as seguintes a as seguintes alteraalteraçções:ões:

–– Na declaraNa declaraçção da classe:ão da classe:

publicpublic classclass MinhaJanelaMinhaJanela extendsextends Frame Frame implementsimplements ActionListenerActionListener

–– No construtor adicionar as seguintes linhas (entre a No construtor adicionar as seguintes linhas (entre a instanciainstanciaçção dos atributos e o ão dos atributos e o thisthis..setVisiblesetVisible((truetrue) )) )

thisthis .. btOkbtOk .. addActionListeneraddActionListener (( thisthis ););thisthis .. btCancelabtCancela .. addActionListeneraddActionListener (( thisthis ););thisthis .. btAjudabtAjuda .. addActionListeneraddActionListener (( thisthis ););

Page 20: Modulo05 AWT Swing

20AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

ExemploExemplo(Regra 3)(Regra 3)

––Adicionar o seguinte mAdicionar o seguinte méétodo na classe: todo na classe:

publicpublic voidvoid actionPerformedactionPerformed (( ActionEventActionEvent evento)evento){{

if(evento.if(evento. getSourcegetSource () == () == thisthis .. btOkbtOk )){{

SystemSystem .out..out. printlnprintln (( ““ Botão OK pressionadoBotão OK pressionado ”” ););}}if(if( umaAcaoumaAcao.. getSourcegetSource () == () == thisthis .. btCancelabtCancela )){{

SystemSystem .out..out. printlnprintln (( ““ Botão CANCELA pressionadoBotão CANCELA pressionado ”” ););}}if(if( umaAcaoumaAcao.. getSourcegetSource () == () == thisthis .. btAjudabtAjuda )){{

SystemSystem .out..out. printlnprintln (( ““ Botão AJUDA pressionadoBotão AJUDA pressionado ”” ););}}

}}

Page 21: Modulo05 AWT Swing

21AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

EstratEstratéégia de Implementagia de Implementaççãoão(Regra 3)(Regra 3)

•• Implementar algumas interfaces Implementar algumas interfaces ListenerListener na classe da na classe da janela pode requerer implementar mjanela pode requerer implementar méétodos que não todos que não gostargostarííamos de tratar.amos de tratar.

•• Ex: Tratamento do botão fechar da janelaEx: Tratamento do botão fechar da janelaclassclass Janela Janela extendsextends Frame Frame implementsimplements WindowListenerWindowListener{{......

publicpublic voidvoid windowClosingwindowClosing((WindowEventWindowEvent e) e) { {

SystemSystem..exitexit(0); (0); }}publicpublic voidvoid windowClosedwindowClosed((WindowEventWindowEvent e) { } e) { } // implementa// implementaçção vaziaão vaziapublicpublic voidvoid windowActivatedwindowActivated((WindowEventWindowEvent e) { } e) { } // implementa// implementaçção vaziaão vaziapublicpublic voidvoid windowDeactivatedwindowDeactivated((WindowEventWindowEvent e) { } e) { } // implementa// implementaçção vaziaão vaziapublicpublic voidvoid windowIconifiedwindowIconified((WindowEventWindowEvent e) { } e) { } // implementa// implementaçção vaziaão vaziapublicpublic voidvoid windowDeiconifiedwindowDeiconified((WindowEventWindowEvent e) { } e) { } // implementa// implementaçção vaziaão vaziapublicpublic voidvoid windowOpenedwindowOpened((WindowEventWindowEvent e) { } e) { } // implementa// implementaçção vaziaão vazia

}}

Page 22: Modulo05 AWT Swing

22AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

EstratEstratéégia de Implementagia de Implementaççãoão(Regra 3)(Regra 3)

•• Uma soluUma soluçção para isto ão para isto éé utilizar uma utilizar uma classe internaclasse interna que que seja especializaseja especializaçção de uma classe adaptadora.ão de uma classe adaptadora.

•• Classe Interna (Classe Interna (InnerInner ClassClass))–– Classe que Classe que éé declarada dentro do escopo de outra classe. declarada dentro do escopo de outra classe.

•• Assim, ao invAssim, ao invéés da classe da janela implementar uma s da classe da janela implementar uma interface interface ListenerListener que contenha vque contenha váários mrios méétodos, todos, podemos criar uma classe interna como especializapodemos criar uma classe interna como especializaçção ão de uma classe adaptadora e nos mde uma classe adaptadora e nos méétodos todos addXXXXListeneraddXXXXListener passar como parâmetro uma instância passar como parâmetro uma instância da classe interna.da classe interna.

Page 23: Modulo05 AWT Swing

23AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

ExemploExemplo(Regra 3 (Regra 3 –– Uso de Classes Internas)Uso de Classes Internas)

classclass Janela Janela extendsextends FrameFrame{{

Janela( ) Janela( ) // No Construtor// No Construtor{{

......thisthis..addWindowListeneraddWindowListener( new ( new MeuWindowListenerMeuWindowListener( ) );( ) );......

} }

......

publicpublic classclass MeuWindowListenerMeuWindowListener extendsextends WindowAdapterWindowAdapter // Classe Interna// Classe Interna{{

// Redefini// Redefiniçção do mão do méétodo todo windowClosingwindowClosingpublicpublic voidvoid windowClosingwindowClosing((WindowEventWindowEvent e)e){ {

SystemSystem..exitexit(0); (0); }}

}}}}OBS: Observe os arquivos de OBS: Observe os arquivos de bytecodebytecode que foram gerados!!!que foram gerados!!!

Page 24: Modulo05 AWT Swing

24AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

EstratEstratéégia de Implementagia de Implementaççãoão(Regra 3)(Regra 3)

•• Classe Interna AnônimaClasse Interna Anônima

–– ÉÉ quando eu instancio um objeto e juntamente quando eu instancio um objeto e juntamente fafaçço uma redefinio uma redefiniçção de um ou mais mão de um ou mais méétodos da todos da classe.classe.

–– Funciona como sendo Funciona como sendo ““uma especializauma especializaçção para um ão para um úúnico objeto onde nico objeto onde éé feita a redefinifeita a redefiniçção de ão de mméétodostodos””

–– A vantagem A vantagem éé que não que não éé necessnecessáário ter que criar rio ter que criar explicitamente uma classe internaexplicitamente uma classe interna

Page 25: Modulo05 AWT Swing

25AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

ExemploExemplo(Regra 3 (Regra 3 –– Uso de Classes Adaptadoras e Uso de Classes Adaptadoras e

Classes Internas Anônimas)Classes Internas Anônimas)......

thisthis..addWindowListeneraddWindowListener(( new new WindowAdapterWindowAdapter()(){{

publicpublic voidvoid windowClosingwindowClosing((WindowEventWindowEvent evtevt)){{

SystemSystem..exitexit(0);(0);}}

}}) ;) ;

......

•• O que O que éé isto????isto????–– Indico quem Indico quem éé o o WindowListenerWindowListener da janelada janela

–– Instancio um objeto de Instancio um objeto de WindowAdapterWindowAdapter. Apesar de ser uma classe . Apesar de ser uma classe abstrata, isto abstrata, isto éé permitido pois juntamente com a instanciapermitido pois juntamente com a instanciaçção, estamos ão, estamos redefinindo o mredefinindo o méétodo todo windowClosingwindowClosing. .

–– Na prNa práática, o compilador cria com esta declaratica, o compilador cria com esta declaraçção uma classe interna ão uma classe interna ““sem nomesem nome”” (o nome (o nome éé dado automaticamente). A geradado automaticamente). A geraçção do ão do bytecodebytecode éésemelhante ao caso da classe Interna com nome.semelhante ao caso da classe Interna com nome.

Page 26: Modulo05 AWT Swing

26AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

EstratEstratéégia de Implementagia de Implementaççãoão(Regra 4)(Regra 4)

•• Cada janela deverCada janela deveráá ter o seu ter o seu Gerente LayoutGerente Layout que que éé um um objeto que gerencia a disposiobjeto que gerencia a disposiçção dos componentes na janela.ão dos componentes na janela.

•• Gerente Layout (Gerente Layout (Layout Layout ManagersManagers))–– Classes que determinam a posiClasses que determinam a posiçção dos componentes dentro de ão dos componentes dentro de

um containerum container

–– Implementam a interface Implementam a interface LayoutManagerLayoutManager

–– O Layout para uma janela O Layout para uma janela éé estabelecido por:estabelecido por:thisthis..setLayoutsetLayout((LayoutManagerLayoutManager))

•• Exemplos: Exemplos: BorderLayoutBorderLayout, , GridLayoutGridLayout, , FlowLayoutFlowLayout, , CardLayoutCardLayout, , GridBagLayoutGridBagLayout..

•• Funcionamento: Funcionamento: –– A cada componente que A cada componente que éé inserido em um container, o gerente inserido em um container, o gerente

de layout recalcula a poside layout recalcula a posiçção de cada componente (...)ão de cada componente (...)

Page 27: Modulo05 AWT Swing

27AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

EstratEstratéégia de Implementagia de Implementaççãoão(Regra 4)(Regra 4)

–– Quando a janela Quando a janela éé redimensionada, o gerente mais uma vez redimensionada, o gerente mais uma vez se encarrega de arrumar os componentesse encarrega de arrumar os componentes

–– Alguns gerentes de layout se utilizam de informaAlguns gerentes de layout se utilizam de informaçções do ões do componente como:componente como:

•• getMininumSizegetMininumSize() e () e

•• getPreferredSizegetPreferredSize().().

•• BorderLayoutBorderLayout ÉÉ o o defaultdefault para as Janelas (para as Janelas (FramesFrames). Ele ). Ele divide a Janela em cinco regiões gendivide a Janela em cinco regiões genééricas: ricas: NorthNorth, , SouthSouth, , CenterCenter ((defaultdefault), ), EastEast e e WestWest. Ao adicionarmos os . Ao adicionarmos os componentes, podemos indicar em que região estes componentes, podemos indicar em que região estes ficarão.ficarão.

Page 28: Modulo05 AWT Swing

28AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

ExemploExemplo(Regra 4 (Regra 4 -- BorderLayoutBorderLayout))

classclass Janela Janela extendsextends Frame Frame ImplementsImplements ActionListenerActionListener{{

ButtonButton btNortebtNorte, , btLestebtLeste, , btOestebtOeste, , btSulbtSul, , btCentrobtCentro;;

publicpublic Janela( String tJanela( String tíítulo ) tulo ) {{

super(tsuper(tíítulo); tulo); thisthis..btNortebtNorte = = newnew ButtonButton("Norte"); ("Norte"); thisthis..addadd((thisthis..btNortebtNorte, , BorderLayoutBorderLayout.NORTH .NORTH ); ); thisthis..btSulbtSul = = newnew ButtonButton("Sul"); ("Sul"); thisthis..addadd((thisthis..btSulbtSul, , BorderLayoutBorderLayout.SOUTH .SOUTH ); ); thisthis..btLestebtLeste = = newnew ButtonButton((““Leste"); Leste"); thisthis..addadd((btLestebtLeste, , BorderLayoutBorderLayout.EAST.EAST ); ); thisthis..btOestebtOeste = = newnew ButtonButton("Oeste"); ("Oeste"); thisthis..addadd((btOestebtOeste, , BorderLayoutBorderLayout.WEST.WEST ); ); thisthis..btCentrobtCentro = = newnew ButtonButton("Centro"); ("Centro"); thisthis..addadd((btCentrobtCentro, , BorderLayoutBorderLayout.CENTER.CENTER ); ); thisthis..setSizesetSize(300,100); (300,100); thisthis..show(); show();

} } ......

}}

Page 29: Modulo05 AWT Swing

29AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

EstratEstratéégia de Implementagia de Implementaççãoão(Regra 4)(Regra 4)

•• O O GridLayoutGridLayout apresenta uma disposiapresenta uma disposiçção semelhante a uma ão semelhante a uma tabela. Para sua construtabela. Para sua construçção informamos o não informamos o núúmero de mero de linhas e colunas que o linhas e colunas que o GridGrid terteráá e em cada ce em cada céélula lula podemos colocar um componente.podemos colocar um componente.

Page 30: Modulo05 AWT Swing

30AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

ExemploExemplo(Regra 4 (Regra 4 -- GridLayoutGridLayout))

classclass MinhaFrameMinhaFrame extendsextends FrameFrame implementsimplements ActionListenerActionListener

{{ButtonButton btGridbtGrid[];[];

minhaFrameminhaFrame(String t(String tíítulo) tulo) {{

super(tsuper(tíítulo); tulo); thisthis..setLayoutsetLayout( ( new new GridLayoutGridLayout(4,2) (4,2) ); ); // Indico que o gerente layout // Indico que o gerente layout éé

/// o objeto / o objeto GridLayoutGridLayout criadocriadothisthis..btGridbtGrid = new = new ButtonButton[8];[8];for(int contador=0;contador<8;contador++)for(int contador=0;contador<8;contador++){{

thisthis..btGridbtGrid[contador] = new [contador] = new ButtonButton("Botão "+(1+contador)); ("Botão "+(1+contador)); thisthis..addadd((btGridbtGrid[contador]); [contador]); // Não determino a posi// Não determino a posiçção. daão. da

// A ordem ser// A ordem seráá esquerda para esquerda para // direi// direita e de cima para baixota e de cima para baixo

}}thisthis..setSizesetSize(300,200); (300,200); thisthis..show(); show();

}}......

}}

Page 31: Modulo05 AWT Swing

31AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

EstratEstratéégia de Implementagia de Implementaççãoão(Regra 4)(Regra 4)

•• O O FlowLayoutFlowLayout éé um Layout sequm Layout seqüüencial; ou encial; ou seja, ele vai adicionando os componentes de seja, ele vai adicionando os componentes de cima para baixo, da esquerda para a direita. cima para baixo, da esquerda para a direita. Caso o componente não caiba na Caso o componente não caiba na ““linhalinha””, ele , ele passa a passa a ““linhalinha”” abaixo.abaixo.

Page 32: Modulo05 AWT Swing

32AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

EstratEstratéégia de Implementagia de Implementaççãoão(Regra 4)(Regra 4)

•• CardLayoutCardLayout–– Enquanto outros layout Enquanto outros layout managersmanagers mostram todos mostram todos

os componentes de uma sos componentes de uma sóó vez na tela, o vez na tela, o CardLayoutCardLayout exibe um de cada vez.exibe um de cada vez.

–– Produz uma espProduz uma espéécie de cie de visualizadorvisualizador de slides dos de slides dos componentes. componentes.

–– Somente um componente (Somente um componente (““slideslide””) ) éé visualizado visualizado de cada vez.de cada vez.

–– Geralmente usado com painGeralmente usado com painééis (a frente)is (a frente)

–– A ordem dos componentes segue a ordem de A ordem dos componentes segue a ordem de inserinserçção dos mesmos no containerão dos mesmos no container

Page 33: Modulo05 AWT Swing

33AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

EstratEstratéégia de Implementagia de Implementaççãoão(Regra 4)(Regra 4)

•• NavegaNavegaççãoão

–– Seguindo a ordem de inserSeguindo a ordem de inserçção, a classe permite a ão, a classe permite a naveganavegaçção atravão atravéés dos ms dos méétodos:todos:•• ffirstirst(Container)(Container)•• ppreviousrevious(Container)(Container)•• nnextext(Container)(Container)•• lastlast(Container)(Container)

–– Acesso a um dado slideAcesso a um dado slide

•• ÉÉ posspossíível especificar um nome ao slide quando vel especificar um nome ao slide quando adicionado ao containeradicionado ao container

•• A partir desse nome, o A partir desse nome, o CardLayoutCardLayout pode pode mostrar o slidemostrar o slide–– show(Container,String)show(Container,String)

Page 34: Modulo05 AWT Swing

34AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

EstratEstratéégia de Implementagia de Implementaççãoão(Regra 4)(Regra 4)

Page 35: Modulo05 AWT Swing

35AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

EstratEstratéégia de Implementagia de Implementaççãoão(Regra 5)(Regra 5)

•• Quando nenhum gerente de Layout implementa o que Quando nenhum gerente de Layout implementa o que desejamos para a janela somos obrigados a fazer uma desejamos para a janela somos obrigados a fazer uma composicomposiçção de ão de PanelsPanels..

•• Para cada região podemos implementar um Layout Para cada região podemos implementar um Layout especespecíífico com o uso de fico com o uso de PanelsPanels. Esta classe . Esta classe éé um um container no qual podemos adicionar componentes container no qual podemos adicionar componentes seguindo um Layout prseguindo um Layout próóprio para a região.prio para a região.

•• O exemplo apresenta um jogo da velha implementado O exemplo apresenta um jogo da velha implementado com com BorderLayoutBorderLayout e e PanelsPanels (clique sobre o (clique sobre o íícone).cone).

Page 36: Modulo05 AWT Swing

36AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

Desconsiderando as Regras 4 e 5 Desconsiderando as Regras 4 e 5 (Trabalhando sem (Trabalhando sem LayoutsLayouts))

•• Para criar uma container sem layout Para criar uma container sem layout managermanager use use nullnull no no argumento do margumento do méétodo todo setLayoutsetLayout().().

•• Na maioria das vezes não e uma boa idNa maioria das vezes não e uma boa idééia desabilitar o ia desabilitar o layout layout managermanager, pois o que aparece muito bonito em , pois o que aparece muito bonito em uma plataforma, pode aparece um desastre em outra.uma plataforma, pode aparece um desastre em outra.

•• Para mostrar os componentes num container sem layout, Para mostrar os componentes num container sem layout, devemos especificar sua posidevemos especificar sua posiçção e tamanho.ão e tamanho.

•• Exemplo:Exemplo:

thisthis..setLayoutsetLayout((nullnull););

ButtonButton okok = new = new ButtonButton((““okok””););

thisthis..addadd((okok););

okok..setBoundssetBounds(10,10,30,15); // posicionando o botão na janela(10,10,30,15); // posicionando o botão na janela

Page 37: Modulo05 AWT Swing

37AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

Classes e Componentes AWTClasses e Componentes AWT

•• TambTambéém conhecidos comom conhecidos como–– Elementos de controle da interface de usuElementos de controle da interface de usuááriorio

–– WidgetsWidgets ((windowwindow gadgetsgadgets –– dispositivos de janela)dispositivos de janela)

•• São elementos da interface que podem ser São elementos da interface que podem ser apresentados ao usuapresentados ao usuááriorio–– E responder ao mouse e ao tecladoE responder ao mouse e ao teclado

•• Classe abstrata Classe abstrata ComponentComponent éé a principala principal–– Define aspectos comuns a todos os componentes:Define aspectos comuns a todos os componentes:

Fonte, cor, Fonte, cor, paintingpainting, , reshapingreshaping e tratamento de eventose tratamento de eventos

•• ContainersContainers–– Podem conter outros componentes, inclusive outros Podem conter outros componentes, inclusive outros

containerscontainers..

Page 38: Modulo05 AWT Swing

38AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

Classes AWT Classes AWT (Hierarquia)(Hierarquia)

Object

Component

Button

Canvas

Checkbox

Choice

Container

Label

List

Scrollbar

TextComponent

TextArea

TextField

Panel

ScrollPane

Window

Applet

Dialog

Frame

FileDialog

Classes

abstratas

Page 39: Modulo05 AWT Swing

39AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

Classes AWT Classes AWT (Frame)(Frame)

•• ÉÉ uma janela que possui barra de tuma janela que possui barra de tíítulo e bordas.tulo e bordas.

•• FramesFrames são são containerscontainers, portanto podemos adicionar , portanto podemos adicionar componentes.componentes.

•• Quando criamos uma janela, ela Quando criamos uma janela, ela éé inicialmente invisinicialmente invisíível. vel. Usamos o mUsamos o méétodo todo setVisiblesetVisible((truetrue)) para mostrpara mostráá--la na tela la na tela e o me o méétodo todo setVisiblesetVisible((falsefalse)) para escondêpara escondê--la.la.

•• O layout padrão de um frame O layout padrão de um frame éé o o BorderLayoutBorderLayout..

•• A classe Frame implementa a interface A classe Frame implementa a interface MenuContainerMenuContainer, , podendo assim conter barra de menus.podendo assim conter barra de menus.

•• Usualmente criaUsualmente cria--se uma nova classe que estende de se uma nova classe que estende de Frame. ObtFrame. Obtéémm--se:se:–– Uma janela para apresentaUma janela para apresentaçção grão grááfica da aplicafica da aplicaççãoão

–– Um container para dispor os componentes GUI da aplicaUm container para dispor os componentes GUI da aplicaçção.ão.

Page 40: Modulo05 AWT Swing

40AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

Classes AWT Classes AWT ((PanelPanel))

•• ÉÉ um container um container �� Permite dispor outros Permite dispor outros componentes, inclusive outros paincomponentes, inclusive outros painééisis

•• A utilizaA utilizaçção deste componente oferece grande ão deste componente oferece grande versatilidade na disposiversatilidade na disposiçção dos componentes na ão dos componentes na interface da aplicainterface da aplicaççãoão

•• O painel não tem uma aparência fO painel não tem uma aparência fíísica, sica, éé apenas uma apenas uma áárea retangular em que podemos trabalhar.rea retangular em que podemos trabalhar.

•• O gerente de layout padrão do painel O gerente de layout padrão do painel éé o o FlowLayoutFlowLayout..

Page 41: Modulo05 AWT Swing

41AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

Classes AWT Classes AWT ((PanelPanel))

•• A classe A classe ColorColor do AWT permite definir e do AWT permite definir e trabalhar com cores.trabalhar com cores.

•• Java permite usar o mesmo objeto Java permite usar o mesmo objeto ColorColor em em qualquer plataforma, mas não garante que irqualquer plataforma, mas não garante que irááser tratado da mesma forma pelo diferentes ser tratado da mesma forma pelo diferentes displays.displays.

•• Tem constantes prTem constantes préé--definidas, que são usadas definidas, que são usadas como qualquer outra varicomo qualquer outra variáável de classe, por vel de classe, por exemplo exemplo ColorColor..redred éé uma constante uma constante representando a cor vermelha.representando a cor vermelha.

Page 42: Modulo05 AWT Swing

42AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

Classes AWT Classes AWT ((InsetsInsets))

•• Prove mecanismo de encapsular o gerenciamento das Prove mecanismo de encapsular o gerenciamento das margens dos quatro lados de um Container.margens dos quatro lados de um Container.

•• Podemos obter os valores de margem de um Container Podemos obter os valores de margem de um Container atravatravéés do ms do méétodo todo getInsetsgetInsets()() que retorna um objeto que retorna um objeto InsetsInsets..

•• As margens são criadas com valores em As margens são criadas com valores em pixelspixels, que são , que são armazenados nas variarmazenados nas variááveis veis toptop, , bottonbotton, , leftleft e e rightright..

•• O container pode utilizar o espaO container pode utilizar o espaçço reservado pelo o reservado pelo InsetsInsetspara desenhar, atravpara desenhar, atravéés do ms do méétodo todo paintpaint()()..

•• Se o gerenciador de layout do container não Se o gerenciador de layout do container não ““olharolhar”” para para o o insetsinsets, as opera, as operaçções serão totalmente ignoradas.ões serão totalmente ignoradas.

Page 43: Modulo05 AWT Swing

43AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

Classes AWT Classes AWT ((LabelLabel))

•• ÉÉ uma simples linha de texto estuma simples linha de texto estáático.tico.

•• ÚÚtil para colocar ttil para colocar tíítulo ou mensagem prtulo ou mensagem próóximos a ximos a outros componente da interface.outros componente da interface.

•• Segue o layout do container em que foi Segue o layout do container em que foi adicionado, sendo facilmente alinhado. adicionado, sendo facilmente alinhado.

•• A classe A classe LabelLabel tem mtem méétodos que permitem todos que permitem configurar o texto, alinhamento e o tipo de fonte.configurar o texto, alinhamento e o tipo de fonte.

•• Exemplo: Exemplo: LabelLabel titulo = titulo =

new new LabelLabel (( ““ ComponentesAWTComponentesAWT”” , , LabelLabel .CENTER.CENTER););

Page 44: Modulo05 AWT Swing

44AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

Classes AWT Classes AWT ((ButtonButton))

•• Botões costumam ser bastante utilizados em interfaces Botões costumam ser bastante utilizados em interfaces grgrááficas ficas

•• Quando pressionados, Quando pressionados, éé disparado um evento que disparado um evento que éétratado pelo mtratado pelo méétodo todo actionPerformedactionPerformed()(). .

•• O acionamento do botão O acionamento do botão éé visualmente indicado por um visualmente indicado por um efeito de afundamento da superfefeito de afundamento da superfííciecie

•• A aparência de um botão depende da plataforma sobre a A aparência de um botão depende da plataforma sobre a qual a aplicaqual a aplicaçção estão estáá rodandorodando

•• O que pode ser alterado:O que pode ser alterado:

–– O texto e fonte que o botão mostra,O texto e fonte que o botão mostra,

–– Cores de fundo e texto, Cores de fundo e texto,

–– Habilitar e desabilitar o botãoHabilitar e desabilitar o botão

•• ExemploExemplo: : add(new add(new Button(Button( ““ exemploexemplo ”” ));));

Page 45: Modulo05 AWT Swing

45AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

Classes AWT Classes AWT ((TextFieldTextField e e TextAreaTextArea))

•• Subclasses de Subclasses de TextComponentTextComponent::

•• Inserir textoInserir texto

•• Obter textoObter texto

•• Selecionar textoSelecionar texto

•• Marcar como somente de leituraMarcar como somente de leitura

•• O O TextFieldTextField éé um componente que mostra apenas um componente que mostra apenas uma linha de texto. Seu tamanho pode ser uma linha de texto. Seu tamanho pode ser especificado, porespecificado, poréém pode ser alterado pelo gerente m pode ser alterado pelo gerente de layout corrente. de layout corrente.

•• O texto do O texto do TexFieldTexField aparece alinhado aparece alinhado àà esquerdaesquerda

Page 46: Modulo05 AWT Swing

46AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

Classes AWT Classes AWT ((TextFieldTextField e e TextAreaTextArea))

•• No No TextFieldTextField, podemos ocultar os caracteres digitados , podemos ocultar os caracteres digitados usando o musando o méétodo todo setEchoCharactersetEchoCharacter((charchar c).c).

•• O O TextAreaTextArea éé um componente de texto com mum componente de texto com múúltiplas ltiplas linhaslinhas

•• A aparência da A aparência da scrollbarscrollbar no no TextAreaTextArea pode ser pode ser controlada. Com a ajuda de algumas constantes, controlada. Com a ajuda de algumas constantes, podemos remover ou mudar de lugar as podemos remover ou mudar de lugar as scrollbarsscrollbars. . Quando a Quando a scrollbarscrollbar horizontal não aparece, o horizontal não aparece, o wordwrapwordwrap éé automautomáático.tico.

•• Fonte e Cores podem ser facilmente alterados em Fonte e Cores podem ser facilmente alterados em ambos componentesambos componentes

Page 47: Modulo05 AWT Swing

47AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

Classes AWT Classes AWT ((DialogsDialogs))

•• Representa uma janela que aparece por pouco Representa uma janela que aparece por pouco tempo, por exemplo, para mostrar avisos, fazer tempo, por exemplo, para mostrar avisos, fazer perguntas...perguntas...

–– ““Arquivo modificado, Deseja salvar ?Arquivo modificado, Deseja salvar ?””

•• Pode ser modal, via construtor ou pelo mPode ser modal, via construtor ou pelo méétodo todo setModalsetModal((truetrue))

•• Uma Uma dialogdialog boxbox modal impossibilita entradas para modal impossibilita entradas para qualquer uma das outras janelas da tela atqualquer uma das outras janelas da tela atéé que que ela seja fechada (janela modal).ela seja fechada (janela modal).

Page 48: Modulo05 AWT Swing

48AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

Classes AWT Classes AWT ((DialogsDialogs))

•• O AWT oferece dois tipos de O AWT oferece dois tipos de dialogdialog boxbox, a classe , a classe DialogDialog, que oferece uma caixa de dialogo , que oferece uma caixa de dialogo gengenéérica, e a classe rica, e a classe FileDialogFileDialog, que , que éé especespecíífica fica para manipulapara manipulaçção de arquivos.ão de arquivos.

•• São vinculadas, atravSão vinculadas, atravéés do construtor, a janelas js do construtor, a janelas jááexistentes.existentes.

•• Todas as janelas são invisTodas as janelas são invisííveis quando criadasveis quando criadas

Page 49: Modulo05 AWT Swing

49AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

Classes AWT Classes AWT ((CheckBoxCheckBox e e CheckBoxGroupCheckBoxGroup))

•• Todo Todo CheckboxCheckbox tem um texto, que pode ser vazio, e tem um texto, que pode ser vazio, e um estado(selecionado ou não selecionado).um estado(selecionado ou não selecionado).

•• Quando Quando CheckboxsCheckboxs são associadas a um são associadas a um CheckboxGroupCheckboxGroup, s, sóó um pode estar selecionado.um pode estar selecionado.

Para um Para um CheckboxCheckbox fazer parte fazer parte

de um grupo, basta passar o de um grupo, basta passar o

argumento correspondente ao argumento correspondente ao

CheckboxGroupCheckboxGroup no construtor no construtor

do primeiro.do primeiro.

Page 50: Modulo05 AWT Swing

50AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

Classes AWT Classes AWT ((ChoiceChoice))

•• Permite escolher uma opPermite escolher uma opçção de uma listaão de uma lista

•• A lista fica aberta somente enquanto A lista fica aberta somente enquanto éé feita a feita a escolha.escolha.

•• A seleA seleçção de um item, automaticamente, ão de um item, automaticamente, desfaz a seledesfaz a seleçção do item previamente ão do item previamente escolhidoescolhido

•• O objeto O objeto ChoiceChoice éé criado vazio. Os itens são criado vazio. Os itens são adicionados atravadicionados atravéés do ms do méétodos:todos:–– addItemaddItem(String item)(String item) ou ou

–– insertinsert(String item, int (String item, int indexindex));;

Page 51: Modulo05 AWT Swing

51AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

Classes AWT Classes AWT ((ChoiceChoice))

•• Podemos ainda:Podemos ainda:

–– saber quantos elementos tem na lista,saber quantos elementos tem na lista,

–– obter um item dado um obter um item dado um ííndice,ndice,

–– remover um item,remover um item,

–– obter a posiobter a posiçção do elemento selecionado, etc.ão do elemento selecionado, etc.

Page 52: Modulo05 AWT Swing

52AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

Classes AWT Classes AWT ((ListList))

•• Permite a exibiPermite a exibiçção de lista de itensão de lista de itens–– Os itens não podem ser editados diretamenteOs itens não podem ser editados diretamente

–– Uma barra de rolagem Uma barra de rolagem éé exibida automaticamente quando o exibida automaticamente quando o nnúúmero de itens excede o tamanho do componentemero de itens excede o tamanho do componente

–– Pode ser configurado para permitir selePode ser configurado para permitir seleçção de um ão de um úúnico item nico item ou mou múúltiplosltiplos

–– Quando se clica num item selecionado este passa a estar Quando se clica num item selecionado este passa a estar selecionado e viceselecionado e vice--versaversa

•• O modo de operaO modo de operaçção pode ser configurado atravão pode ser configurado atravéés do s do construtor ou do mconstrutor ou do méétodo todo setMultipleModesetMultipleMode((BooleanBoolean))

Page 53: Modulo05 AWT Swing

53AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

Classes AWT Classes AWT ((ScrollPaneScrollPane))

–– Pode conter componentes maiores que elePode conter componentes maiores que ele

–– Apenas um Apenas um úúnico componente deve ser adicionado nico componente deve ser adicionado ao ao ScrollPaneScrollPane

–– Apresenta Apresenta scrollbarscrollbar horizontal/vertical quando horizontal/vertical quando necessnecessááriorio

Page 54: Modulo05 AWT Swing

54AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

Classes AWT Classes AWT ((ScrollBarScrollBar))

•• ScrollbarsScrollbars servem para manipular um intervalo de valores.servem para manipular um intervalo de valores.

•• Podem ser horizontais ou verticaisPodem ser horizontais ou verticais

•• Basicamente, se obtBasicamente, se obtéém ou define um valor para a m ou define um valor para a ScrollbarScrollbar

•• ScroolbarScroolbar não possui texto associadonão possui texto associado

•• ÁÁreas de texto e listas jreas de texto e listas jáá vêm com suas prvêm com suas próóprias barras de prias barras de rolagem.rolagem.

Page 55: Modulo05 AWT Swing

55AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

Classes AWT Classes AWT ((ImageImage))

•• ÉÉ uma classe abstrata, mas uma classe abstrata, mas éé utilizada por outros utilizada por outros componentes para possibilitar componentes para possibilitar renderizarenderizaççãoão de de imagens.imagens.

•• Alguns mAlguns méétodos recebem como parâmetro o objeto todos recebem como parâmetro o objeto ImageObserverImageObserver. . ÉÉ uma interface geralmente uma interface geralmente representada pelo container da imagem.representada pelo container da imagem.

–– getHeigthgetHeigth((ImageObserverImageObserver))

–– getWidthgetWidth((ImageObserverImageObserver))

•• A classe A classe ToolkitToolkit éé geralmente utilizada para obter geralmente utilizada para obter uma imagem.uma imagem.

imageimage = = ToolkitToolkit .. getDefaultToolkitgetDefaultToolkit ().(). getImagegetImage (( nomeArquivonomeArquivo )) ;;

Page 56: Modulo05 AWT Swing

56AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

Classes AWT Classes AWT ((CanvasCanvas))

•• Representa uma Representa uma áárea retangular destinada a suportar rea retangular destinada a suportar operaoperaçções de desenho, e monitorar eventos ões de desenho, e monitorar eventos realizados pelo usurealizados pelo usuáário.rio.

•• ÉÉ uma classe base para criauma classe base para criaçção de novas classes.ão de novas classes.

•• Embora sejamos tentados a desenhar diretamente no Embora sejamos tentados a desenhar diretamente no Container, a maneira mais apropriada Container, a maneira mais apropriada éé utilizando utilizando esta classe. esta classe. ContainersContainers não tomam conhecimento dos não tomam conhecimento dos desenhos feitos nele.desenhos feitos nele.

•• O O CanvasCanvas éé criado sem tamanho definido. Ao coloccriado sem tamanho definido. Ao colocáá--lo num gerente de layout, este se encarrega de lo num gerente de layout, este se encarrega de dimensionar o dimensionar o CanvasCanvas para você.para você.

Page 57: Modulo05 AWT Swing

57AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

Classes AWT Classes AWT ((MenuBarMenuBar, Menu e , Menu e MenuItemMenuItem))

MenuComponent

CheckboxMenuItem

MenuContainer

MenuShortcut

MenuBarMenuItem

Menu

Page 58: Modulo05 AWT Swing

58AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

Classes AWT Classes AWT (Menu)(Menu)

•• Menu Menu éé o container para o container para MenuItemMenuItem

•• Como Menu Como Menu éé uma subclasse de uma subclasse de MenuItemMenuItem, um Menu , um Menu pode aparecer dentro de outro Menu.pode aparecer dentro de outro Menu.

•• CheckboxMenuItemCheckboxMenuItem éé um tipo especial de um tipo especial de MenuItemMenuItemque pode ser marcado como fazemos com o que pode ser marcado como fazemos com o checkboxcheckbox..

•• Adicionamos itens com o mAdicionamos itens com o méétodotodo–– addadd(String (String labellabel)), ou com , ou com

–– insertinsert(String (String labellabel, int , int indexindex)), que insere o item na posi, que insere o item na posiçção ão dada.dada.

Page 59: Modulo05 AWT Swing

59AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

Classes AWT Classes AWT (Menu)(Menu)

•• ÉÉ simples criar uma aplicasimples criar uma aplicaçção com menuão com menu

–– Adicionar barra de menu a janela (Frame)Adicionar barra de menu a janela (Frame)

–– Adicionar menus suspensosAdicionar menus suspensos

–– Adicionar itens de menuAdicionar itens de menu

Page 60: Modulo05 AWT Swing

60AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

Classes AWT Classes AWT (Menu)(Menu)

•• Para associar funcionalidade Para associar funcionalidade aos itens de menu aos itens de menu éénecessnecessáário um tratamento rio um tratamento de eventos adequado.de eventos adequado.

•• Podemos ainda:Podemos ainda:

–– saber quantos itens tem o saber quantos itens tem o primeiro nprimeiro níível de um Menu;vel de um Menu;

–– obter um item do Menu dado obter um item do Menu dado um um ííndice;ndice;

–– adicionar separadores; etc.adicionar separadores; etc.

Page 61: Modulo05 AWT Swing

61AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

Classes AWT Classes AWT (Menu)(Menu)

•• Adicionando atalhos...Adicionando atalhos...

–– CriaCria--se uma instância de se uma instância de MenuItemMenuItem que recebe que recebe uma instância de uma instância de MenuShortcutMenuShortcut•• MenuItemMenuItem miSairmiSair = new = new MenuItemMenuItem((““SairSair””,new ,new

MenuShortcutMenuShortcut((KeyEventKeyEvent.VK_R));.VK_R));

–– O menu serO menu seráá acionado pressionando CTRL+Racionado pressionando CTRL+R

–– As combinaAs combinaçções se restringem as teclas ões se restringem as teclas CTRL+qualquer por questões de compatibilidade CTRL+qualquer por questões de compatibilidade entre plataformasentre plataformas

Page 62: Modulo05 AWT Swing

62AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

Classes AWT Classes AWT ((PopMenuPopMenu))

•• Permite associar um menu a um contexto Permite associar um menu a um contexto especespecíífico.fico.

•• Para associar um Para associar um popmenupopmenu a um componente a um componente use o muse o méétodo todo addadd((PopMenuPopMenu))

•• Assim como acontece com a classe Menu, o Assim como acontece com a classe Menu, o PopMenuPopMenu tambtambéém m éé criado vazio e os itens são criado vazio e os itens são adicionados depois.adicionados depois.

•• Para mostrar o menu na tela, use o mPara mostrar o menu na tela, use o méétodo todo show().show().

Page 63: Modulo05 AWT Swing

63AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

Classes AWT Classes AWT (Outras Classes (Outras Classes ÚÚteis)teis)

•• Classes que representam estruturas e recursos Classes que representam estruturas e recursos úúteisteis

•• Lidam com formas geomLidam com formas geoméétricastricas–– Classe Classe DimensionDimension

–– Classe Classe InsetsInsets

–– Classe Classe PointPoint

–– Classe Classe PolygonPolygon

–– Classe Classe RectangleRectangle

–– Classe Classe ShapeShape

•• Lidam com coresLidam com cores–– Classe Classe ColorColor, representa uma entre 16.777.216 cores, representa uma entre 16.777.216 cores

–– Classe Classe SystemColorSystemColor, representa cores do sistema p/texto, , representa cores do sistema p/texto, etcetc

Page 64: Modulo05 AWT Swing

64AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

Classes AWT Classes AWT (Outras Classes (Outras Classes ÚÚteis)teis)

•• Recursos diversosRecursos diversos

–– Classe Cursor, formato do mouse pointerClasse Cursor, formato do mouse pointer

–– Classe Classe FontFont, representa um fonte, representa um fonte

–– Classe Classe FontMetricsFontMetrics, dimensões e espa, dimensões e espaççamentos do fonteamentos do fonte

–– Classe Classe GraphicsGraphics, representa um contexto gr, representa um contexto grááficofico

–– Classe Classe ImageImage, representa uma imagem, representa uma imagem

–– Interface Interface PrintGraphicsPrintGraphics, usado para imprimir, usado para imprimir

–– Classe Classe PrintJobPrintJob, usado para imprimir, usado para imprimir

–– Classe Classe ToolkitToolkit, ferramentas para , ferramentas para windowingwindowing, exemplo: , exemplo: resoluresoluçção e tamanho da tela, lista de fontes, etcão e tamanho da tela, lista de fontes, etc

Page 65: Modulo05 AWT Swing

65AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

SwingSwing

•• API API baseadabaseada no AWT no AWT parapara construconstruççãoão de interfacesde interfaces–– PadrãoPadrão a a partirpartir do JDK 1.2do JDK 1.2

•• BasicamenteBasicamente, as classes Swing , as classes Swing possuempossuem o o mesmomesmonomenome queque as classes AWT, as classes AWT, porporéémm tendotendo um um ““JJ”” ààfrentefrente do do nomenome..

•• PacotePacote: : javax.swingjavax.swing

Page 66: Modulo05 AWT Swing

66AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

SwingSwingComponentesComponentes

JListJListJLabelJLabelJInternalFrameJInternalFrameJFileChooserJFileChooser

JDialogJDialogImageIconImageIconJColorBoxJColorBoxJColorChooserJColorChooser

JCheckBoxMenuItemJCheckBoxMenuItemJCheckBoxJCheckBoxJButtonJButtonJAppletJApplet

Page 67: Modulo05 AWT Swing

67AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

SwingSwingComponentesComponentes

JTabbedPaneJTabbedPaneJSplitPaneJSplitPaneJSliderJSliderJScrollPaneJScrollPane

JScrollBarJScrollBarJRadioButtonMenuItemJRadioButtonMenuItemJRadioButtonJRadioButtonJProgressBarJProgressBar

JPopupMenuJPopupMenuJOptionPaneJOptionPaneJMenuBarJMenuBarJMenuJMenu

Page 68: Modulo05 AWT Swing

68AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

SwingSwingComponentesComponentes

JPanelJPanel e e JFrameJFrameJTreeJTreeJToolTipJToolTipJToolBarJToolBar

JToggleButtonJToggleButtonJTextFieldJTextFieldJTextAreaJTextAreaJTableJTable

Page 69: Modulo05 AWT Swing

69AWT e Swing

AWT e Swing ––

Alessandro Cerqu

eira

Alessandro Cerqu

eira --20

/8/200

720

/8/200

7

SwingSwingJFrameJFrame e e JAppletJApplet

•• DiferenDiferenççasas PrPrááticasticas

–– Para Para adicionaradicionar um um componentecomponente emem um um JFrameJFrame devemosdevemos enviarenviar a a mensagemmensagem add add parapara o o ContentPaneContentPane do Frame do Frame aoao invinvééss do do prpróóprioprio Frame:Frame:

•• Antes:Antes:minhaJanela.add(compminhaJanela.add(comp););

•• Agora:Agora:minhaJanela.getContentPane().add(compminhaJanela.getContentPane().add(comp););

–– PodemosPodemos terter applets applets implementadosimplementados com Swing. com Swing. EntretantoEntretanto, , comocomo Swing Swing ssóó se se tornoutornou parteparte dada JFC com Java 2, JFC com Java 2, nemnem todostodos osos browsers browsers suportamsuportamdiretamentediretamente o o ccóódigodigo. . ÉÉ necessnecessááriorio possuirpossuir um plugum plug--in in queque permitapermita a a visualizavisualizaççãoão destesdestes applets applets comocomo objetosobjetos embutidosembutidos::

<EMBED type="application/x<EMBED type="application/x--javajava--applet;version=1.2.2" width="500" height="300" applet;version=1.2.2" width="500" height="300" align="baseline" code="Fetcher.class" align="baseline" code="Fetcher.class" codebasecodebase="." ="." pluginspagepluginspage="http://java.sun.com/products/plugin/1.2/plugin="http://java.sun.com/products/plugin/1.2/plugin--install.html">install.html">

<NOEMBED> No Java 2 support for APPLET!!<NOEMBED> No Java 2 support for APPLET!!

</NOEMBED></EMBED></NOEMBED></EMBED>