interface gráfica swing - instituto de computação - uffleomurta/courses/poo/aula11.pdf• a...

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

Upload: others

Post on 17-Dec-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

InterfaceGráficaSwing

[email protected]

Page 2: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

Auladehoje•  CriaçãodeinterfacegráficaviabibliotecaSwing

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

Leonardo Murta Interface Gráfica Swing 2

Page 3: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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

Page 4: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

ComponenteseContainers

Leonardo Murta Interface Gráfica Swing 4

Page 5: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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

Page 6: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

ComponenteseContainers

Leonardo Murta Interface Gráfica Swing 6

Janela

Containers

Componentes

Page 7: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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

Page 8: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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”));

Page 9: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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);

Page 10: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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

Leonardo Murta Interface Gráfica Swing 10

JScrollPane JSplitPane JTabbedPane

JToolBar

Page 11: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

Componentes•  OscomponentesSwingherdamdaclasseJComponent

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

Leonardo Murta Interface Gráfica Swing 11

Page 12: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

TextodeAjuda•  OscomponentesSwingsuportamtextosdeajuda

– OmétodosetToolTipText()indicaotextodeajudadeumcomponente

– EstemétodorecebeumaStringcomotextodeajudacomoumparâmetro

– Otextodeajudaéapresentadoquandoousuárioparaocursordomousesobreocomponente

Leonardo Murta Interface Gráfica Swing 12

Page 13: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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

Page 14: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

MétodosdeSuporte•  Fonteecursordocomponente

– OmétodosetFont()alteraafontedecaracteresdeumcomponenteparaafonterecebidacomoparâmetro

– OmétodogetFont()retornaafontedecaracteressendouNlizadaporumcomponente

– OmétodosetCursor()alteraocursordemouseuNlizadoporumcomponenteparaocursorrecebidocomoparâmetro

– OmétodogetCursor()retornaocursordemousesendouNlizadoporumcomponente

Leonardo Murta Interface Gráfica Swing 14

Page 15: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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

Page 16: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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();

Page 17: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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

Page 18: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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);

Page 19: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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

– OmétodogetSelected()determinaseocheckboxfoiselecionadopelousuário

– OmétodosetSelected()selecionaoudeselecionaocheckbox,deacordocomseuparâmetrobooleano

Leonardo Murta Interface Gráfica Swing 19

Page 20: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

CaixasdeSeleção-JRadioBuZon•  RadiobuZonssãocriadosemgrupos

– Somenteumbotãodeumgrupopodeestarselecionadoemumdeterminadoinstante

– AclasseBuFonGrouppermiteacriaçãodegruposdebotões

Leonardo Murta Interface Gráfica Swing 20

Page 21: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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);

Page 22: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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

Leonardo Murta Interface Gráfica Swing 22

Page 23: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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);

Page 24: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

ComboBoxes•  Comboboxespodemsereditáveis

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

– OmétodogetSelectedItem()retornaoitemselecionadonacomboboxouotextodigitadopelousuário

Leonardo Murta Interface Gráfica Swing 24

Page 25: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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

Page 26: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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

Page 27: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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”);

Page 28: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

Listas•  Listasapresentamdiversositensaomesmotempo

–  Comonacombobox,alistapodeserinicializadacomumvetor,umalistadestringsouummodelo(DefaultListModel)

Leonardo Murta Interface Gráfica Swing 28

Page 29: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

Listas•  Listaspermitemdiversosmodosdeseleçãodeitens

– OmétodosetSelecNonMode()alteraomododeseleçãodositensdeumalista

•  SINGLE_SELECTION•  SINGLE_INTERVAL_SELECTION•  MULTIPLE_INTERVAL_SELECTION

Leonardo Murta Interface Gráfica Swing 29

Page 30: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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);

Page 31: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

Linhas/ÁreasdeTexto•  Permitemaediçãodetextos

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

Leonardo Murta Interface Gráfica Swing 31

Page 32: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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

Page 33: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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

Page 34: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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

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

Leonardo Murta Interface Gráfica Swing 34

Page 35: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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

Page 36: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

OutrosComponentes•  Swingofereceumasériedeoutroscomponentes

Leonardo Murta Interface Gráfica Swing 36

JSlider

JProgressBar JTree

JTable

JColorChooser

JFileChooser

Page 37: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

Menus

Leonardo Murta Interface Gráfica Swing 37

Page 38: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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);

Page 39: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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 ();

Page 40: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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);

Page 41: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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);

Page 42: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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);

Page 43: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

Layout

Leonardo Murta Interface Gráfica Swing 43

Page 44: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

PosicionamentodeComponentes•  Aindependênciadeplataformageraalgunsproblemas

–  AlgunscontrolesocupamáreasdeteladiferentesemplataformasdisNntas

–  Exemplo:umalinhadeediçãodetextoocupaumaáreadetelamenornoWindowsquenoX-Windows

–  Problema:comoposicionaroscontrolesnajanelalevandoemcontaotamanhodiferenteemcadaplataforma?

Leonardo Murta Interface Gráfica Swing 44

Page 45: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

LayoutManagers•  Solução:controladoresdeposicionamento

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

Leonardo Murta Interface Gráfica Swing 45

Page 46: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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

– Oscomponentespodemindicarseustamanhoseposiçõesdesejadas,masolayoutmanagerdecidesobresuasdimensõesfinaisemcadacontainer

Leonardo Murta Interface Gráfica Swing 46

Page 47: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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

– Osegundoparâmetrotrazinformaçõessobreaposiçãodocomponenteinserido

– Porexemplo,olayoutmanagerBorderLayoutexigequeodesenvolvedorespecifiqueaposiçãorelaNvadeseuscomponentes.

Leonardo Murta Interface Gráfica Swing 47

Page 48: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

Indicandoolayoutmanagerdeumpainel

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

Leonardo Murta Interface Gráfica Swing 48

JPanel painel = new JPanel();

painel.setLayout (new BorderLayout ());

Page 49: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

Tamanhodesejadopeloscomponentes

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

– OmétodosetMaximumSize()indicaotamanhomáximodocomponente

– OmétodosetPreferredSize()indicaotamanhodesejadopelocomponente

– Odesenvolvedorpodechamarestesmétodosapóscriarseuscomponentes

Leonardo Murta Interface Gráfica Swing 49

Page 50: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

LayoutManagers-FlowLayout•  Componentessãoorganizadosemlinhas

– Cadacomponenteocupaoseutamanhodesejado– Seoespaçohorizontalnãoforsuficienteparatodososcomponentes,olayoutmanageruNlizadiversaslinhas

– Dentrodeumalinha,odesenvolvedorpodeespecificaroalinhamentodoscomponentes

Leonardo Murta Interface Gráfica Swing 50

Page 51: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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"));

Page 52: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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

Leonardo Murta Interface Gráfica Swing 52

Page 53: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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);

Page 54: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

LayoutManagers-GridLayout•  Componentessãoorganizadosemumagrade

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

Leonardo Murta Interface Gráfica Swing 54

Page 55: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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

Page 56: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

Comooposicionamentoérealizado?

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

Leonardo Murta Interface Gráfica Swing 56

Page 57: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

Bordas

Leonardo Murta Interface Gráfica Swing 57

Page 58: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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

Leonardo Murta Interface Gráfica Swing 58

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

Page 59: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

BordasSimples

Leonardo Murta Interface Gráfica Swing 59

➤  Representam os tipos mais simples de bordas

Page 60: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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());

Page 61: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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.

Page 62: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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);

Page 63: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

TratamentodeEventos

Leonardo Murta Interface Gráfica Swing 63

Page 64: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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

Page 65: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

RespondendoaEventos•  Umobjetopodeseregistrarpara“escutar”eventos

– Oobjetodeveimplementarumainterfaceespecífica– Oobjetodeveseregistrarnocomponente– Diversosobjetospodemserregistradosparaomesmoevento

– UmmesmoobjetopodetratardiversoseventosdisNntos

•  Cadaeventoérepresentadoporumobjeto– Oobjetopossuiinformaçõessobreoevento– OobjetoidenNficaocomponentegeradordoevento

Leonardo Murta Interface Gráfica Swing 65

Page 66: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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

Page 67: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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”); }

}

Page 68: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

EventosdeAção•  InterfaceAcNonListener

– Geradosporbotões,menuseEnteremlinhasdeedição

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

– OmétodorecebeumobjetodaclasseAcNonEvent

Leonardo Murta Interface Gráfica Swing 68

Page 69: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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);

Page 70: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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

Page 71: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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);

Page 72: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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

Page 73: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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);

Page 74: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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

Page 75: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

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);

Page 76: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

Exercício•  Façaumaagendatelefônicaquepermitaadicionar,removereatualizarcontatosusandoosconceitosvistosemaula

Leonardo Murta Interface Gráfica Swing 76

Page 77: Interface Gráfica Swing - Instituto de Computação - UFFleomurta/courses/poo/aula11.pdf• A interface com o usuário é orientada a janelas – Os elementos de interface com o

InterfaceGráficaSwing

[email protected]