77
Interface Gráfica Swing Leonardo Gresta Paulino Murta [email protected]ff.br

Interface Gráfica Swing - ic.uff.brleomurta/courses/poo/aula11.pdf · – import java.awt.event.* Leonardo Murta Interface Gráfica Swing 3 . Componentes e Containers Leonardo Murta

Embed Size (px)

Citation preview

InterfaceGráficaSwing

[email protected]

Auladehoje•  CriaçãodeinterfacegráficaviabibliotecaSwing

– Containers– Componentes– Menu– Layout– Bordas– Eventos

Leonardo Murta Interface Gráfica Swing 2

PacotesdoSwing•  AsclassesdoSwingestãodistribuídaspordiversospacotes.Osprincipaispacotessão:–  javax.swing.*–  javax.swing.event.*

•  AlgumasclassesdospacotesanNgasdaAWTtambémsãouNlizadospeloSwing:–  importjava.awt.*–  importjava.awt.event.*

Leonardo Murta Interface Gráfica Swing 3

ComponenteseContainers

Leonardo Murta Interface Gráfica Swing 4

ComponenteseContainers•  Ainterfacecomousuárioéorientadaajanelas

– Oselementosdeinterfacecomousuáriosãoclassificadoscomojanelas,containersecomponentes

– Asjanelassãoabasedainterfacecomousuário,contendoosdemaiselementos

– Oscontainerssãogruposdecomponentes,apresentadosemumaregiãodeteladefinida

– Oscomponentessãoosprincipaiselementosdeinterface,sendouNlizadosdiretamentepelousuário

Leonardo Murta Interface Gráfica Swing 5

ComponenteseContainers

Leonardo Murta Interface Gráfica Swing 6

Janela

Containers

Componentes

ComponenteseContainers•  Ajanela(JFrame)éocontainerdemaisaltonível

– AjanelaexisteparaproverespaçoparaapresentaçãodoscomponentesSwing

•  Opainel(JPanel)éumcontainerintermediário– Ospainéisexistemparacontrolaroposicionamentodoscomponentes

•  Componentesatômicos,comobotões(JBuZon)elinhasdeedição(JTextField),realizamainteraçãocomousuáriopropriamentedita

Leonardo Murta Interface Gráfica Swing 7

Janelas-JFrame•  AclasseJFramerepresentaumajanelaSwing

– Seuconstrutorpodereceberumastringcomo\tulodajanela

– Todajanelapossuiumpainelinvisível(ContentPane)– Oscomponentesdajanelasãoinseridosnestepainel– Ajanelapodeconterumabarrademenu

Leonardo Murta Interface Gráfica Swing 8

JFrame frame = new JFrame(“Alo, Mundo”); frame.getContentPane().add (new JButton (“Teste”));

PainéisIntermediários-JPanel•  AclasseJPanelrepresentaumpainelsimples

–  JPaneléocontainerintermediáriomaissimples– Opainelpodeserinseridoemumajanelaououtropainel

– Ométodoadd()insereopainelnajanela

Leonardo Murta Interface Gráfica Swing 9

JFrame frame; JPanel painel; frame = new JFrame(“Alo, Mundo”); painel = new JPanel (); frame.getContentPane().add (painel);

OutrosPainéisIntermediários•  Swingpossuioutrospainéisintermediários:

Leonardo Murta Interface Gráfica Swing 10

JScrollPane JSplitPane JTabbedPane

JToolBar

Componentes•  OscomponentesSwingherdamdaclasseJComponent

•  Estaclasseoferecerecursosparaodesenvolvedordeaplicaçõescominterfacegráfica– Textosdeajuda– Bordas– Tratamentodeeventos– Outrosmétodosdesuporte

Leonardo Murta Interface Gráfica Swing 11

TextodeAjuda•  OscomponentesSwingsuportamtextosdeajuda

– OmétodosetToolTipText()indicaotextodeajudadeumcomponente

– EstemétodorecebeumaStringcomotextodeajudacomoumparâmetro

– Otextodeajudaéapresentadoquandoousuárioparaocursordomousesobreocomponente

Leonardo Murta Interface Gráfica Swing 12

MétodosdeSuporte•  Visualizaçãoeacessoaocomponente

– OmétodosetEnabled()recebeumbooleanoquepermitequeodesenvolvedorhabiliteouinabiliteumcomponente

– OmétodoisEnabled()determinaseumcomponenteestáhabilitadoouinabilitado,retornandoumbooleano

– OmétodosetVisible()recebeumbooleanoquepermitequeodesenvolvedorapresenteouescondaumcomponente

– OmétodoisVisible()determinaseumcomponenteestávisível,retornandoumbooleano

Leonardo Murta Interface Gráfica Swing 13

MétodosdeSuporte•  Fonteecursordocomponente

– OmétodosetFont()alteraafontedecaracteresdeumcomponenteparaafonterecebidacomoparâmetro

– OmétodogetFont()retornaafontedecaracteressendouNlizadaporumcomponente

– OmétodosetCursor()alteraocursordemouseuNlizadoporumcomponenteparaocursorrecebidocomoparâmetro

– OmétodogetCursor()retornaocursordemousesendouNlizadoporumcomponente

Leonardo Murta Interface Gráfica Swing 14

MétodosdeSuporte•  Tamanhoeposiçãodocomponente:

– OmétodogetWidth()retornaalarguradocomponenteemnúmerodepontos

– OmétodogetHeight()retornaaalturadocomponenteemnúmerodepontos

– OmétodogetSize()retornaasdimensõesdocomponenteemumobjetodaclasseDimension

– OmétodogetBounds()retornaaáreaocupadaporumcomponenteemumobjetodaclasseRectangle

Leonardo Murta Interface Gráfica Swing 15

Componentes-Exemplo•  Exemplodetrechodecódigo:

Leonardo Murta Interface Gráfica Swing 16

JButton botao = new JButton (); botao.setToolTipText (“Texto de ajuda do botão”); botao.setEnabled (true); boolean visivel = botao.isVisible();

Botões•  SwingpossuidiversosNposdebotões

–  JBuZon:botãosimples

–  JCheckBox:caixadeseleção–  JRadioBuZon:caixadeseleçãocommúlNplasopções

•  OsbotõespossuemversõesuNlizadasemmenus–  JMenuItem:itemdemenu

–  JCheckBoxMenuItem:caixadeseleçãoparamenus

–  JRadioBuZonMenuItem:caixadeseleçãomúlNplaparamenus

Leonardo Murta Interface Gráfica Swing 17

Botões•  CaracterísNcasdosbotõesSwing

– Apresentamtextoeimagens– PodempossuirummnemônicouNlizadocomohotkey– Controlamoposicionamentodo\tulodobotão

Leonardo Murta Interface Gráfica Swing 18

ImageIcon icone = new ImageIcon("images/right.gif"); JButton b1 = new JButton (“Teste”, icone); b1.setVerticalTextPosition (AbstractButton.CENTER); b1.setHorizontalTextPosition (AbstractButton.LEFT); b1.setMnemonic(KeyEvent.VK_D);

CaixasdeSeleção-JCheckBox•  PossuemascaracterísNcasdeumbotãogenérico

– OmétodogetSelected()determinaseocheckboxfoiselecionadopelousuário

– OmétodosetSelected()selecionaoudeselecionaocheckbox,deacordocomseuparâmetrobooleano

Leonardo Murta Interface Gráfica Swing 19

CaixasdeSeleção-JRadioBuZon•  RadiobuZonssãocriadosemgrupos

– Somenteumbotãodeumgrupopodeestarselecionadoemumdeterminadoinstante

– AclasseBuFonGrouppermiteacriaçãodegruposdebotões

Leonardo Murta Interface Gráfica Swing 20

CaixasdeSeleção-JRadioBuZon•  Exemplodetrechodecódigo:

Leonardo Murta Interface Gráfica Swing 21

JRadioButton birdButton = new JRadioButton(“Bird”); JRadioButton catButton = new JRadioButton(“Cat”); JRadioButton dogButton = new JRadioButton(“Dog”); ButtonGroup group = new ButtonGroup(); group.add(birdButton); group.add(catButton); group.add(dogButton); birdButton.setSelected(true);

ComboBoxes•  Comboboxespermitemaseleçãodeumitemdeumalista,ocupandoumespaçodelimitadodajanela– Apenasumitemestáselecionadoemcadainstante– AcomboboxpodeserinicializadacomumarrayoucomumconjuntodeStrings

Leonardo Murta Interface Gráfica Swing 22

ComboBoxes•  Acessoaosdados

– OmétodosetSelectedIndex()alteraoitemselecionado,indicandooíndicedonovoitemnalistadeopções

– OmétodogetSelectedIndex()retornaoíndicedoitemselecionadonalistadeopções

Leonardo Murta Interface Gráfica Swing 23

String[] pets = { "Bird", "Cat", "Dog", "Rabbit", "Pig" }; JComboBox petList = new JComboBox (pets); petList.setSelectedIndex(4);

ComboBoxes•  Comboboxespodemsereditáveis

– OmétodosetEditable()alteraomododeediçãodeumacomboboxdeacordocomseuparâmetrobooleano

– OmétodogetSelectedItem()retornaoitemselecionadonacomboboxouotextodigitadopelousuário

Leonardo Murta Interface Gráfica Swing 24

ComboBoxes•  Modelos

– Umacomboboxpodeserinicializadacomummodelo– Omodelopermiteaatualizaçãodositensdacombo– Oprogramapodeinserireremoveritensduranteaexecução

– OmétodosetModel()alteraomodelodeumacombobox

•  DefaultComboModel– OmodeloérepresentadopelainterfaceComboModel– AclasseDefaultComboModelimplementaainterface– Aclassepossuimétodosparainserçãoeremoçãodeitens

Leonardo Murta Interface Gráfica Swing 25

ComboBoxes•  AlgunsmétodosdaDefaultComboModel

– OmétodoinsertItemAt()insereoitemrecebidocomoparâmetroemumadeterminadaposiçãodacombo

– OmétodoaddItem()insereumnovoitemaofimdacombo– OmétodoremoveAllItems()removetodosositensdacombo

– OmétodoremoveItem()removedacombooitemrecebidocomoparâmetro

– OmétodogetItemCount()retornaonúmerodeitensdacombo

Leonardo Murta Interface Gráfica Swing 26

ComboBoxes•  Exemplodetrechodecódigo:

Leonardo Murta Interface Gráfica Swing 27

DefaultComboModel modelo = new DefaultComboModel (); modelo.addElement (”Item 1"); modelo.addElement ("Item 2"); modelo.addElement ("Item 3"); modelo.addElement ("Item 4"); JComboBox combo = new JComboBox (modelo); modelo.addElement (“Item 5”);

Listas•  Listasapresentamdiversositensaomesmotempo

–  Comonacombobox,alistapodeserinicializadacomumvetor,umalistadestringsouummodelo(DefaultListModel)

Leonardo Murta Interface Gráfica Swing 28

Listas•  Listaspermitemdiversosmodosdeseleçãodeitens

– OmétodosetSelecNonMode()alteraomododeseleçãodositensdeumalista

•  SINGLE_SELECTION•  SINGLE_INTERVAL_SELECTION•  MULTIPLE_INTERVAL_SELECTION

Leonardo Murta Interface Gráfica Swing 29

Listas•  Listasdevemserinseridasempainéisderolamento

Leonardo Murta Interface Gráfica Swing 30

String[] pessoas = { “Eu”, “Você”, “Ele”, “Ela”}; JList lista = new JList (pessoas); lista.setSelectionMode (ListSelectionModel.SINGLE_SELECTION); JScrollPane scroll= new JScrollPane (lista); painel.add(scroll);

Linhas/ÁreasdeTexto•  Permitemaediçãodetextos

–  Oconstrutordalinhadeediçãoindicaseutamanhodesejado–  Oconstrutornãolimitaotamanhodotextoeditado–  OmétodosetText()alteraotextoemediçãonalinha–  OmétodogetText()retornaotextoeditadopelousuário

Leonardo Murta Interface Gráfica Swing 31

Linhas/ÁreasdeTexto•  Exemplodetrechodecódigo

Leonardo Murta Interface Gráfica Swing 32

JTextField linha = new JTextField (20); linha.setText (“Alo, Mundo !”); linha.selectAll (); JTextArea area = new JTextArea (5, 20); area.setText (“Testando 1, 2, 3”); JScrollPane scroll= new JScrollPane (area); painel.add(scroll);

Linha de texto simples

Área de texto com múltiplas linhas

Áreas de texto são inseridas em painéis

Linhas/ÁreasdeTexto•  Métodosdesuporte

– OmétodosetEditable()indicasealinhadetextoéeditávelouread-only,deacordocomseuparâmetrobooleano

– OmétodoisEditable()determinasealinhadetextoéeditávelouread-only,retornandoumbooleano

– OmétodosetHorizontalAlignment()indicacomootextoéalinhadonalinhadeedição

•  JTextField.LEFT•  JTextField.CENTER•  JTextField.RIGHT

Leonardo Murta Interface Gráfica Swing 33

Rótulos•  Rótulospermitemaapresentaçãodetextoseimagens– OsmétodosgetText()esetText()permitemconsultarealterarotextodeumrótulo

– OsmétodosgetIcon()esetIcon()permitemconsultarealteraraimagemapresentadanorótulo

Leonardo Murta Interface Gráfica Swing 34

Rótulos•  Exemplodetrechodecódigo:

Leonardo Murta Interface Gráfica Swing 35

ImageIcon icon = new ImageIcon (”boom.gif"); JLabel label1 = new JLabel ("Image and Text", icon, JLabel.CENTER); label1.setVerticalTextPosition (JLabel.BOTTOM); label1.setHorizontalTextPosition (JLabel.CENTER); painel.add (label1); label2 = new JLabel ("Text-Only Label"); painel.add (label2); label3 = new JLabel (icon); painel.add (label3);

Alinhamento do texto

OutrosComponentes•  Swingofereceumasériedeoutroscomponentes

Leonardo Murta Interface Gráfica Swing 36

JSlider

JProgressBar JTree

JTable

JColorChooser

JFileChooser

Menus

Leonardo Murta Interface Gráfica Swing 37

MenusemBarra•  Exemplodetrechodecódigo

Leonardo Murta Interface Gráfica Swing 38

JMenuBar menuBar = new JMenuBar(); frame.setJMenuBar(menuBar); JMenu menu = new JMenu ("Menu"); menuBar.add (menu); JMenuItem menuItem = new JMenuItem (”Item de Menu", KeyEvent.VK_T); menu.add(menuItem);

ItensdeMenu•  Podemserinicializadosdediversasformas

Leonardo Murta Interface Gráfica Swing 39

menu.add(new JMenuItem (titulo, letra_chave)); menu.add(new JMenuItem (titulo, icone)); menu.add(new JMenuItem (icone)); menu.addSeparator ();

ItensdeMenu-RadioBuZons

Leonardo Murta Interface Gráfica Swing 40

ButtonGroup group = new ButtonGroup(); rbMenuItem = new JRadioButtonMenuItem("A Radio button menu item"); rbMenuItem.setSelected(true); menu.add (rbMenuItem); group.add (rbMenuItem); rbMenuItem = new JRadioButtonMenuItem ("Another One"); menu.add(rbMenuItem); group.add(rbMenuItem);

ItensdeMenu-CheckBoxes

Leonardo Murta Interface Gráfica Swing 41

cbMenuItem = new JCheckBoxMenuItem ("A check box menu item"); cbMenuItem.setMnemonic (KeyEvent.VK_C); menu.add (cbMenuItem); cbMenuItem = new JCheckBoxMenuItem ("Another one"); cbMenuItem.setMnemonic (KeyEvent.VK_H); menu.add (cbMenuItem);

ItensdeMenu-Submenus

Leonardo Murta Interface Gráfica Swing 42

submenu = new JMenu ("A submenu"); menu.add (submenu); menuItem = new JMenuItem ("An item in the submenu"); submenu.add (menuItem); menuItem = new JMenuItem ("Another item"); submenu.add (menuItem);

Layout

Leonardo Murta Interface Gráfica Swing 43

PosicionamentodeComponentes•  Aindependênciadeplataformageraalgunsproblemas

–  AlgunscontrolesocupamáreasdeteladiferentesemplataformasdisNntas

–  Exemplo:umalinhadeediçãodetextoocupaumaáreadetelamenornoWindowsquenoX-Windows

–  Problema:comoposicionaroscontrolesnajanelalevandoemcontaotamanhodiferenteemcadaplataforma?

Leonardo Murta Interface Gráfica Swing 44

LayoutManagers•  Solução:controladoresdeposicionamento

–  Cadacontainerindicaseucontroladordeposicionamento– Oscontrolessãoinseridosnocontainersemposição– Ocontroladordeposicionamentoajustaaposiçãoetamanhodoscontroles,deacordocomascaracterísNcasdaplataforma

Leonardo Murta Interface Gráfica Swing 45

LayoutManagers•  Ocontroledeposicionamentodeterminaotamanhoeaposiçãodoscomponentesdeumpainel– Todososcontainerspossuemumlayoutmanager– Olayoutmanageréumobjetoresponsávelporposicionaredeterminarotamanhodoscomponentesdocontainer

– Oscomponentespodemindicarseustamanhoseposiçõesdesejadas,masolayoutmanagerdecidesobresuasdimensõesfinaisemcadacontainer

Leonardo Murta Interface Gráfica Swing 46

LayoutManagers•  SemprequeodesenvolvedoruNlizarométodoadd()deumcontainer,olayoutmanagerdeveserconsiderado– Algunslayoutmanagersexigemaespecificaçãodeumsegundoparâmetronométodoadd()

– Osegundoparâmetrotrazinformaçõessobreaposiçãodocomponenteinserido

– Porexemplo,olayoutmanagerBorderLayoutexigequeodesenvolvedorespecifiqueaposiçãorelaNvadeseuscomponentes.

Leonardo Murta Interface Gráfica Swing 47

Indicandoolayoutmanagerdeumpainel

•  OmétodosetLayout()deumpainelpermitealterarseulayoutmanager,queépassadocomoparâmetro

Leonardo Murta Interface Gráfica Swing 48

JPanel painel = new JPanel();

painel.setLayout (new BorderLayout ());

Tamanhodesejadopeloscomponentes

•  Umcomponentepodeindicarsuasdimensõesparaseuslayoutmanagers– OmétodosetMinimumSize()indicaotamanhomínimodocomponente

– OmétodosetMaximumSize()indicaotamanhomáximodocomponente

– OmétodosetPreferredSize()indicaotamanhodesejadopelocomponente

– Odesenvolvedorpodechamarestesmétodosapóscriarseuscomponentes

Leonardo Murta Interface Gráfica Swing 49

LayoutManagers-FlowLayout•  Componentessãoorganizadosemlinhas

– Cadacomponenteocupaoseutamanhodesejado– Seoespaçohorizontalnãoforsuficienteparatodososcomponentes,olayoutmanageruNlizadiversaslinhas

– Dentrodeumalinha,odesenvolvedorpodeespecificaroalinhamentodoscomponentes

Leonardo Murta Interface Gráfica Swing 50

LayoutManager-FlowLayout•  Exemplodetrechodecódigo:

Leonardo Murta Interface Gráfica Swing 51

Container painel = frame.getContentPane(); painel.setLayout (new FlowLayout ()); painel.add (new JButton ("Button 1")); painel.add (new JButton ("Button 2")); painel.add (new JButton ("Button 3"));

LayoutManagers-BorderLayout•  Componentessãoorganizadosnasbordasdocontainer– Quandoumcomponenteéinserido,ométodoadd()deverecebersuaposiçãorelaNvanocontainer

Leonardo Murta Interface Gráfica Swing 52

LayoutManager-BorderLayout•  Exemplodetrechodecódigo

Leonardo Murta Interface Gráfica Swing 53

Container painel = frame.getContentPane(); painel.setLayout (new BorderLayout ()); painel.add (new JButton ("Button 1"), BorderLayout.NORTH); painel.add (new JButton ("Button 2"), BorderLayout.CENTER); painel.add (new JButton ("Button 3"), BorderLayout.WEST); painel.add (new JButton ("Button 4"), BorderLayout.SOUTH); painel.add (new JButton ("Button 5"), BorderLayout.EAST);

LayoutManagers-GridLayout•  Componentessãoorganizadosemumagrade

– Cadacomponenteocupaumacéluladagrade– Todasascélulaspossuemomesmotamanho– Otamanhodascélulasédeterminadopeloespaçoocupadopelocontainer

Leonardo Murta Interface Gráfica Swing 54

LayoutManager-GridLayout•  Exemplodetrechodecódigo:

Leonardo Murta Interface Gráfica Swing 55

Container painel = frame.getContentPane(); painel.setLayout(new GridLayout(0,2)); painel.add(new JButton("Button 1")); painel.add(new JButton(”Button 2")); painel.add(new JButton("Button 3"));

2 colunas e quantas linhas forem necessárias

Comooposicionamentoérealizado?

•  Depoisdeinseriroscomponentesdeumajanela,odesenvolvedordevechamarométodopack() – Olayoutmanagercalculaotamanhodesejadodajanela,somandootamanhodesuasbordasaotamanhopreferidodoscomponentesinseridosdiretamentenajanela.

Leonardo Murta Interface Gráfica Swing 56

Bordas

Leonardo Murta Interface Gráfica Swing 57

Bordas•  OmétodosetBorder()indicaabordadocomponente– SwingdefineumafábricaquedeveseruNlizadaparacriarasbordasdoscomponentes

Leonardo Murta Interface Gráfica Swing 58

JPanel panel = new JPanel(); panel.setBorder(BorderFactory.createLineBorder (Color.black));

BordasSimples

Leonardo Murta Interface Gráfica Swing 59

➤  Representam os tipos mais simples de bordas

BordasSimples•  ExemplodecriaçãodasbordasaparNrdafábrica

Leonardo Murta Interface Gráfica Swing 60

comp1.setBorder (BorderFactory.createLineBorder(Color.black);

comp2.setBorder (BorderFactory.createRaisedBevelBorder());

comp3.setBorder (BorderFactory.createEtchedBorder());

comp4.setBorder (BorderFactory.createLoweredBevelBorder());

comp5.setBorder (BorderFactory.createEmptyBorder());

BordascomTítulos

Leonardo Murta Interface Gráfica Swing 61

➤  Bordas com título são bordas simples que apresentam títulos. Se nenhuma borda for especificada junto ao título, o look & feel utiliza uma borda default.

BordascomTítulos•  Exemplodecriaçãodebordasde\tulo

Leonardo Murta Interface Gráfica Swing 62

comp9.setBorder (BorderFactory.createTitledBorder(“teste"));

... Border linha = BorderFactory.createLineBorder (Color.black); TitledBorder titulo = BorderFactory.createTitledBorder (linha, ”teste"); titulo.setTitleJustification (TitledBorder.CENTER); titulo.setTitlePosition (TitledBorder. BOTTOM); comp10.setBorder (titulo);

TratamentodeEventos

Leonardo Murta Interface Gráfica Swing 63

Eventos•  Controlesgerameventos

– Umeventoindicaaocorrênciadeumaatuaçãodousuáriosobreocontroleoualgumamudançainternaqueoafete

–  Exemplos:cliquedeumbotão,movimentodomouse,alteraçãodoconteúdodeumalinhadeedição,...

•  Respostaaeventos– Odesenvolvedordeveprogramarsuaaplicaçãopararesponderaoseventosgeradossobreseuscomponentes

– QualquerobjetopoderesponderaeventosLeonardo Murta Interface Gráfica Swing 64

RespondendoaEventos•  Umobjetopodeseregistrarpara“escutar”eventos

– Oobjetodeveimplementarumainterfaceespecífica– Oobjetodeveseregistrarnocomponente– Diversosobjetospodemserregistradosparaomesmoevento

– UmmesmoobjetopodetratardiversoseventosdisNntos

•  Cadaeventoérepresentadoporumobjeto– Oobjetopossuiinformaçõessobreoevento– OobjetoidenNficaocomponentegeradordoevento

Leonardo Murta Interface Gráfica Swing 65

PrincipaisEventosesuasInterfacesAção do usuário

Clicar um botão

Pressionar Enter em uma linha de texto

Selecionar um item de menu

Fechar uma janela

Pressionar um botão do mouse

Mover o mouse

Componente sendo apresentado

Componente ganha o foco do teclado

Seleção de um item em uma lista

Interface

ActionListener

ActionListener

ActionListener

WindowListener

MouseListener

MouseMotionListener

ComponentListener

FocusListener

ListSelectionListener

Leonardo Murta Interface Gráfica Swing 66

TratamentodeEventos•  Exemplodetrechodecódigo

Leonardo Murta Interface Gráfica Swing 67

... JButton botao = new JButton (“Botao Qualquer”); botao.addActionListener (new Tratador ()); ... class Tratador implements ActionListener {

public void actionPerformed (ActionEvent e) {

System.out.println(“Houve um clique no botao”); }

}

EventosdeAção•  InterfaceAcNonListener

– Geradosporbotões,menuseEnteremlinhasdeedição

– RegistradaatravésdométodoaddAcNonListener()– Ainterfacepossuiumúnicométodo,acNonPerformed()

– OmétodorecebeumobjetodaclasseAcNonEvent

Leonardo Murta Interface Gráfica Swing 68

EventosdeTeclado•  InterfaceKeyListener

– Eventodepressionamentoeliberaçãodeteclas– Eventossãogeradospelocomponentecomofoco– RegistradanocomponentepelométodoaddKeyListener

– Abaixo,sãoapresentadososmétodosdainterface

Leonardo Murta Interface Gráfica Swing 69

public void keyTyped (KeyEvent e);

public void keyPressed (KeyEvent e); public void keyReleased (KeyEvent e);

EventosdeTeclado•  ClasseKeyEvent

–  Informaçõesadicionaisdoseventosdeteclado– OmétodogetKeyChar()retornaocaracteredateclaassociadacomoevento

– OmétodogetKeyCode()retornaocódigo(Unicode)dateclaassociadacomoevento

– AclasseKeyEventdefinediversasconstantesdecódigoreferentesàsteclasassociadascomoevento

– AsconstantessãoiniciadasporVK(VK_A,VK_ESCAPE)Leonardo Murta Interface Gráfica Swing 70

EventosdeMouse•  InterfaceMouseListener

–  Eventosdecliqueeliberaçãodosbotõesdomouse–  Eventosdeentradaesaídadomousedeumcomponente–  RegistradanocomponenteatravésdeaddMouseListener()– Abaixo,sãoapresentadososmétodosdainterface

Leonardo Murta Interface Gráfica Swing 71

public void mousePressed (MouseEvent e); public void mouseReleased (MouseEvent e); public void mouseEntered (MouseEvent e); public void mouseExited (MouseEvent e); public void mouseClicked (MouseEvent e);

EventosdeMouse•  ClasseMouseEvent

– Representaosdadoscomplementaresdoeventodemouse

– OmétodogetClickCount()retornaonúmerodecliquesconsecuNvosrealizadospelousuário

– OsmétodosgetX(),getY()egetPoint()retornamaposiçãodomouse,relaNvaaocomponenteafetadopeloevento

– OmétodogetComponent()retornaocomponenteafetadopeloevento

Leonardo Murta Interface Gráfica Swing 72

EventosdeMouse•  InterfaceMouseMoNonListener

– Eventosdemovimentoearrastamentodomouse– RegistradaatravésdométodoaddMouseMoNonListener()

– Abaixo,sãoapresentadososmétodosdainterface– OsmétodosuNlizamobjetosdaclasseMouseEvent

Leonardo Murta Interface Gráfica Swing 73

public void mouseMoved (MouseEvent e); public void mouseDragged (MouseEvent e);

EventosdeSeleçãodeItem•  InterfaceItemListener

– UNlizadoporcheckboxesecombosboxes– RegistradaatravésdométodoaddItemListener()– AinterfacepossuiométodoitemStateChanged()– OmétodorecebeumobjetodaclasseItemEvent– AclasseItemEventpossuidiversosmétodos

•  getItem()queretornaoitemselecionadooudeselecionado

•  getStateChange()determinaoNpodoevento,quepodeserItemEvent.SELECTEDouItemEvent.DESELECTED

Leonardo Murta Interface Gráfica Swing 74

EventosdeJanela•  InterfaceWindowListener

–  Eventosdeabertura,fechamento,aNvação,desaNvaçãominimizaçãoerestauraçãodejanelasoudiálogos

–  RecebemumobjetodaclasseWindowEvent,quepossuiométodogetWindow(),queretornaajaneladoevento

Leonardo Murta Interface Gráfica Swing 75

void windowOpened (WindowEvent); void windowClosing (WindowEvent); void windowClosed (WindowEvent); void windowIconified (WindowEvent); void windowDeiconified (WindowEvent); void windowActivated (WindowEvent); void windowDeactivated (WindowEvent);

Exercício•  Façaumaagendatelefônicaquepermitaadicionar,removereatualizarcontatosusandoosconceitosvistosemaula

Leonardo Murta Interface Gráfica Swing 76

InterfaceGráficaSwing

[email protected]