Você está na página 1de 50

COMPLEMENTOS DE NETBEANS

Prof. Marcelo Lisboa




Java II
TreinamentonaPlataformaNetBeans
Anotaes
Na viso popular, o NetBeans um ambiente de desenvolvimento Java opensource concorrente de diversos
outros ambientes. Tipicamente chamamos de IDE (Interface Development Environment) essas ferramentas que
nosauxiliamparaescreversoftwaredeformamaisprodutiva.
ONetBeansvemevoluindocompassoslargosacadaverso.Atualmenteencontramosdiversasfacilidadesque
vemagradandoeatraindocadavezmaisdesenvolvedoresdetodoomundo:
UmexcenteeditordetelasSwing
SuportecompletoerobustoparaJavaEnterpriseEdition
PluginsparaUML,desenvolvimentoremoteemequipes,profiling,suporteparaMicroEdition,etc.
InterfaceamigvelcomCVS
DebugingapuradodeaplicativosecomponentescomoJSPseEJBs
SuportenativoparadesenvolvimentoeconsumodeWebServices
Funcionalidadespararefactoringdecdigo.
Portaismotivos,aconselhamosquevocutilizeoNetBeanssemnecessariamenteabandonarseuIDEpreferido.
MasnodeixedeaproveitarasqualidadesparadesenvolvimentoprodutivocomNetBeans.
A plataforma NetBeans representa um conjunto de servios de infraestrutura comum a qualquer aplicativo
desktop.AplataformaNetBeansoferecesuporteparamanipulaodemenus,posicionamentodejanelas,gesto
deconfiguraesentreoutros.

ExistemdiversossoftwaresqueforamescritoscomaplataformaNetBeans,inclusiveIDEsparaoutraslinguagens.
Porm o software mais popular e utilizado o NetBeans IDE este justamente o IDE que utilizamos e
utilizaremos aqui no curso. O NetBeans IDE representado pela plataforma NetBeans com um conjunto de
pluginsqueofeceremosuportealinguagemJava:wizard,coloridodocdigo,debuging,suporteaRDBMSentre
outros.Portantopodemosresumirque:
NetBeansPlatformumncleobsicodeserviosparaaplicativosdesktop.
NetBeansIDEoNetBeansPlatformcomdiversospluginsparadesenvolvimentoJava.
1IntroduoplataformaNetBeans
Anotaes
Odownloadpodeserfeitoapartirdositehttp://www.netbeans.orgeainstaoamaistrivialpossvel:cliqueem
nextatofinish...
AgoraquandochegarpginadedownloadsaberadiferenaentreIDEePlatform:
TreinamentonaPlataformaNetBeans
Anotaes
Vamos fazer uma analisa mais neutra possvel, mesmo tratando apenas de NetBeans neste treinamento. Caso
discordedealgumapontuaosintaseavontadeparadiscutilaemsaladeaulacomoinstrutoreaturma.

Escrevercdigo razovel fraco


Java5 excelente fraco
SuporteparaEnterpriseEdition:JSPsServlet c/plugins excelente
SuporteparaEnterpriseEdition:TagseFiltros c/plugins fraco
SuporteparaEnterpriseEdition:EJB c/plugins excelente
SuporteparaEnterpriseEdition5 excelente ?
SuporteparaME c/plugins ?
WebServices c/plugins razovel
Debugdecdigo excelente excelente
JavaServerFaces fraco c/plugins
Struts fraco c/plugins
Refactoring fraco razovel
CVS razovel razovel
HTMLeCSS razovel c/plugins
ServidoresJ2EE c/plugins razovel
Swing c/plugins razovel
Quantidadedeplugins fraco fraco
SuporteparaUML c/plugins c/plugins
Performance razovel fraco
Estabilidade razovel
(win)
razovel
Conjuntosemplugins razovel excelente
Upgradesecorreesdebugs excelente fraco
1IntroduoplataformaNetBeans
Anotaes
NveldeatualizaocomomercadoeIDE excelente razovel
opensource sim sim no
gratuito sim sim sim
IntegraocomBancodedados c/plugins razovel
Organizaodejanelaselookandfeel excelente razovel
Tempodestartup* 30 44seg.
Memria* 171MB 219MB
*TemposmedidosnoWindowsXPcomP4e768MBdememria.
Lembramos mais uma vez que o Eclipse um ambiente de desenvolvimento limpo, ou seja, vem com
pouqussimas funcionalidades por padro necessitando a instalao de plugins especficos. Avantagemacaba
sendootempodestartupeconsumodememria,porminstalandopluginsestesnmerostendemaaumentar.
possvel configurar tanto o JDeveloper quanto o NetBeans para utilizar uma quantidade menor de plugins
aumentandoseutempodestartupdediminuindooconsumodememria.
TreinamentonaPlataformaNetBeans
Anotaes
UmprojetonoNetBeansumaestruturadediretriosquecontmumarquivoAntbuild.xml,ouseja,oNetBeans
no trabalha com arquivos de configurao especficos, apenas configurao do script Ant. Emcompensao o
NetBeansestfortementevinculadocomoApacheAnt,oquenonadaruimemfunodaaltssimaqualidade
da ferramenta Ant e ampla adeso da comunidade Java, incluindo o prprio James Gosling que em entrevista
exclusiva com tcnicos da Globalcode no JavaOne 2003, confessou ser a ferramenta que mais utiliza na
plataformaJava.
SeumdizerquiserabandonaroNetBeans,tenhacertezaqueoprocessodemigraosersimples,poisosIDEs/
ambientes mais populares do mercado tambm do suporte ao Ant. Para cada projeto criado ou integrado ao
NetBeans voc encontrar um diretrio chamado nbproject que apesar do nome, contm apenas arquivos de
configuraoquealimentamoscriptAntdoNetBeans.
ParacomearmosatrabalharcomoNetBeansdevemosaprenderacriarprojetosfrenteadiferentessituaes:
1. Umprojetototalmentenovo:estaasituaomaissimples
2. Umprojetoapartirdeumcdigofonteexistente
3. Umprojetoapartirdeumcdigofonteexistentecombuild.xmlprprio.
VamosnestecaptuloexplorarcomotratarcadaumadestassituaesparaquevocconsigautilizaroNetBeans
paranovosprojetosetambmparaprojetosexistentes,ondevocatmesmoutilizaoutroIDEcomoEclipse.Vale
lembrarqueperfeitamentepossveltrabalhar comambososIDEsapontandoparaomesmo
projeto!
Um detalhe que lembramos desde j que o NetBeans pode manipular
mltiplos projetos simultneamente, porm voc dever selecionar um
deles como Main Project. O efetito do projeto ser marcado como Main
Projectsimples:quandoclicarmosemRun,Debug,Deployouqualquer
outraao,oNetBeansexecutatalaonoMainProject.
ParaselecionarumprojetocomoMainProject,cliquecomobotodireito
no projeto e selecione Set Main Project, o Main Project sempre est
destacadoemnegritoparasediferenciardosdemais.
1IntroduoplataformaNetBeans
Anotaes
Conformecomentado,estaasituaomaissimplesdetodasparacriarmosumnovoprojetodevemosseguiros
tradicionaispassosdeclicaremFile>NewProject,eoseguintedilogoserdisparado:
Podemos observar que temos uma rvore de categorias e ao lado um template / wizard para a criao de um
determinadotipodeprojeto.Ascategoriasdeprojetoso:
1. General: para projetos desktop, bibliotecas genricas e aplicativos standalone com script ant pr
existente
2. Web: para projetos novos, com cdigofonte ou script ant prexistente. Nesta categoria o NetBeans
trabalharemconjuntocomumservidorJavaEnterpriseEdition
3. Enterprise:paraprojetosdeEJBs
4. NetBeansPluginModules:paracriaodeplugins
5. Samples:excelentesexemplosaplicativos,incluindoexemplosWebcomAJAXeFaces,umplugin,etc.
TreinamentonaPlataformaNetBeans
Anotaes
Para podermos criar um projeto standalone e totalmente novo, selecione . Um
segundo dilogo surgira para voc entrar com o nome do projeto e tambm o folder onde os arquivos sero
armazenados.ONetBeanscriarumscriptAntbuild.xmlparavocautomaticamente.
Neste caso ao clicar em , selecione ,
escolha o nome e odiretrio do projeto, sendo que o no precisa ser o diretrio fonte, posteriormente voc vai
selecionar qual(is) subdiretrio(s) contm
cdigofonteemarquivos.java.
Veja no dilogo ao lado os botes que
permitem adicionar os fontes e tambm os
pacotes que eventualmente contenham
testesJUnit(TestPackageFolders).
O NetBeans tambm criar um script Ant
paraseuprojetoautomaticamente.
1IntroduoplataformaNetBeans
Anotaes
Uma das grandes funcionalidades do NetBeans para depurao de aplicativos locais ou que rodam em
servidores / enterprise. O NetBeans acumula grande tempo de experincia e desenvolvimento dessas features
queatualmenteseencontramextremamentemaduras.
AodepurarumaplicativocomNetBeans,vocsercapazde:
1. Executarumcdigopassoapasso
2. Observarvaloresdevariveiseatmesmoalteralas
3. Observarasthreadsdoseuaplicativo
4. ExecutarJSPsedepurarcompletamenteJSPssemanecessidadedemanipularoservletdebackground
doJSP
5. Entreoutrascapacidades.
Para depurar um aplicativo voc pode comear adicionando Breakpoints no cdigofonte. Um breakpoint
representadoporumalinhadecdigo,queantesdeserexecutadapausaoaplicativoparaoIDEpoderdepurlo.
Existemtrsformasprincipaisparaadicionarumbreakpoint:
1. NoeditordecdigofonteJava,posicione
o cursor na linha e aperte CONTROL +
F8
2. Podemos tambm clicar em cima do
nmerodalinhaquequeremosadicionar
obreakpoint
3. Ou recorrer ao menu Run > Toggle
Breakpoint
A linha com breakpoint ficar avermelhada. Ao
iniciar o aplicativo em modo de debug
(basicamente uma configurao VM), a linha
com breakpoint ocasionar em uma pausa na
execuo do aplicativo, para que o IDE possa
depurlo.
ParainiciaroprocessodedepuraodonossoaplicativopodemosapertarF5ouentoclicarnoboto superior
Debug,queficaaoladodoRun.ONetBeansvaiiniciaramquinavirtualJavaemmododedebug,deformaque
quando ela encontrar um breakpoint no cdigo, ela pausa sua execuo e enviar uma mensagem para o
depurador,nestecasooNetBeans.
TreinamentonaPlataformaNetBeans
Anotaes
Valeobservarqueexisteumaarquiteturadedebuginternamentenamquinavirtualeugarantequeumaplicativo
qualquer,emqualquermquinavirtualpossaserdepuradocomdiferentesferramentascomoEclipse,JDeveloper,
NetBeanseatmesmoopoucoconhecidocomandodelinhajdb.
Ao executar o aplicativo em modo de depurao o NetBeans vai replanejar sua rea de trabalho para mostrar
informaessobrevariveis,threads,stack,classescarregadasemuitomais:
Oaplicativovaipausarnalinhacombreakpointtornandoacomfundoverde,vocpodercorrerocdigopassoa
passo executando e . A diferena entre Into e Over que se a linha tratar de uma
chamada a um mtodo o Into entrar no cdigofonte do mtodo, enquanto o Over simplesmente chamar o
mtodosemmostrarocdigopassoapasso.ParaStepOveraperteF8paraStepIntoaperteF7.
A partir deste ponto voc poder explora demais caractersticas de debug do NetBeans aplicando esta mesma
tcnicaparaJSPs,Servlets,WebServices,Swingetc.
1IntroduoplataformaNetBeans
Anotaes
Umavez que temos o captulo seguinte, exclusivamente para este assunto, vamos apenas apresentar passoa
passo, como construir uma aplicativo Desktop HelloWorld, utilizando Swing e o editor de interfaces grficas do
NetBeans.
1. Cliqueem eescolha comotipodoprojeto
2. Digiteonomeefolderdelocalizaodoprojeto
3. Desabiliteaopo ecliqueem
4. Agora vamos criar uma tela Swing, clique em e escolha

5. Um dilogo ser apresentado para voc digitar o nome da classe e do pacote digiteos e clique em
.
6. Como resultado desta operao o NetBeans apresentar o Frame Swing no seu editor visual. Caso j
tenha trabalhado com Delphi ou Visual Basic, ter maior facilidade de uso do NetBeans pois diversas
caractersticassosimilares.
7. Para desenhar sua tela basta selecionar componentes da paleta e efetuar draganddrop. Ao terminar
cliqueemRunparaexecutarseuaplicativo.
TreinamentonaPlataformaNetBeans
Anotaes
3 31 1
2 InterfacesgrficascomJavaeNetBeans
2.1 Swing
SwingaAPImaisrecenteparadesenvolvimentodeinterfacesgrficasbaseadaemAWT,masmuitomaisrica
emcomponentes.
Esta API no depende de cdigo nativo para representar botes, janelas e outros componentes grficos, sendo
totalmenteindependentedeplataformaedesenhandoseusprprioscomponentes.
A classe JComponent a superclasse de todos os componentes que no so containers de outros, sendo
derivadadeComponent,comopodemosobservarnoseguintediagramadeclasses:
2.1.1 Containers
Vejamosodiagramaabaixo:
2InterfacesgrficascomJavaeNetBeans
Anotaes
3 32 2
2.1.2 Criandoumaj anelasi mpl es
Exemplo:FrameSwing1.java
packagebr.com.globalcode.swing
importjavax.swing.*
publicclassFrameSwing1extendsJFrame{
publicFrameSwing1(){
super("JanelaSwing")
setSize(275,100)
show()
}
publicstaticvoidmain(Stringargs[]){
FrameSwing1t=newFrameSwing1()
}
}
Importante:
Esta janela possui comportamento padro HIDE_ON_CLOSE no boto fechar (X no canto
superior direito), ou seja, quando clicamos, a janela escondida, mas o processo continua
sendo executado. Recomendamos configurar o comportamento de fechamento default,
utilizandooseguintemtododaclasseJFrame, queprovocaotrminodaexecuo.:
setDefaultCloseOperation(EXIT_ON_CLOSE)
Exemplo:FrameSwing2.java
packagebr.com.globalcode.swing
importjavax.swing.*
publicclassFrameSwing2extendsJFrame{
publicFrameSwing2(){
super("JanelaSwing")
//UtilizamosaconstantedeclaradanaclasseJFrameparadefinir
//ocomportamentopadraonofechamentodajanela
setDefaultCloseOperation(EXIT_ON_CLOSE)
setSize(275,100)
show()
}
publicstaticvoidmain(Stringargs[]){
FrameSwing2t=newFrameSwing2()
}
}
TreinamentonaPlataformaNetBeans
Anotaes
3 33 3
2.1.3 Adi cionandoumcomponenteaocontainer
A manipulao e adio de componentes no JFrame um pouco diferente da quevimos em AWT, pois nunca
manipulamosdiretamenteoJFrame.DevemossempreobterumarefernciaparaonicoContainercontidono
JFrame,obtidoatravsdachamadaaomtodogetContentPane().
No exemplo abaixo, iremos utilizar o JLabel, um dos componentes mais simples e que representa o texto em
umanicalinha,nopodendosereditadopelousurio.
UmJLabelpodeserconstrudodaseguinteforma:
JLabellabel1=newJLabel(Textodojlabel)
Exemplo:FrameSwingComLabel.java
packagebr.com.globalcode.swing
importjava.awt.Container
importjavax.swing.*
publicclassFrameSwingComLabelextendsJFrame{
publicFrameSwingComLabel(){
super("JanelaSwing")
//Utilizamosaconstantedeclaradanaclasse
//JFrameparadefinircomportamentopadrao
//nofechamentodajanela
setDefaultCloseOperation(EXIT_ON_CLOSE)
JLabellabel=newJLabel("TextodoJLabel")
Containerc=this.getContentPane()
c.add(label)
setSize(275,100)
show()
}
publicstaticvoidmain(Stringargs[]){
FrameSwingComLabelt=newFrameSwingComLabel()
}
}
2InterfacesgrficascomJavaeNetBeans
Anotaes
3 34 4
2.2 ComponentesSwing
2.2.1 javax.swing.JButton
Representaumbotocomrtulo.
Construtores
JButton(Stringtexto):ovalordavariveltextoserapresentadonoboto
JButton(Iconicone):oconeserapresentadonoboto.
Observao: Uma das formas de criarmos um cone a partir da classe ImageIcon, que pode ser
construdaapartirdeumaStringrepresentandoonomedaimagem.
Exemplo:ImageIconicone=newImageIcon(icone.gif)
ParamaisdetalhesconsulteoJavadoc.
Mtodos
voidsetMnemonic(intmnemonic): Podemosassociaratalhosaosbotesutilizandoestemtodo,
querecebeumintcomoparmetro,representadopelasconstantesdefinidasnaclasseKeyEvent.
Exemplosdeconstantes:
KeyEvent.VK_A=>AtalhoparaA
KeyEvent.VK_B=>AtalhoparaB
KeyEvent.VK_1=>Atalhopara1
TreinamentonaPlataformaNetBeans
Anotaes
3 35 5
Exemplo:TesteJButton.java
packagebr.com.globalcode.swing
importjava.awt.*
importjavax.swing.*
importjava.awt.event.KeyEvent
publicclassTesteJButtonextendsJFrame{
publicTesteJButton(){
super("TesteJButton")
setDefaultCloseOperation(EXIT_ON_CLOSE)
Containerc=getContentPane()
JButtonbotaoOk=newJButton("Ok")
botaoOk.setMnemonic(KeyEvent.VK_O)
c.add(botaoOk)
setSize(200,50)
show()
}
publicstaticvoidmain(Stringargs[]){
TesteJButtont=newTesteJButton()
}
}
2InterfacesgrficascomJavaeNetBeans
Anotaes
3 36 6
Exemplo: TesteJButtonComIcone.java
packagebr.com.globalcode.swing
importjava.awt.*
importjavax.swing.*
publicclassTesteJButtonComIconeextendsJFrame{
publicTesteJButtonComIcone(){
super("TesteJButton")
setDefaultCloseOperation(EXIT_ON_CLOSE)
Containerc=getContentPane()
//Criacaodeumiconecomumaimagem
ImageIconiconeBotao=newImageIcon("duke.gif")
//CriacaodeumbotaocomoiconeiconeBotao
JButtonbotaoIcone=newJButton(iconeBotao)
//Alteramosacordefundodobotaoparaficarcompativelcomaimagem
botaoIcone.setBackground(Color.WHITE)
c.add(botaoIcone)
setSize(80,150)
show()
}
publicstaticvoidmain(Stringargs[]){
TesteJButtonComIconet=newTesteJButtonComIcone()
}
}
TreinamentonaPlataformaNetBeans
Anotaes
3 37 7
2.2.2 javax.swing.JTextFi eld
Esta classe representa um campo de texto digitvel, usualmente empregado para campos de cadastro de uma
nicalinha.
Exemplo:TesteJTextField.java
packagebr.com.globalcode.swing
importjava.awt.*
importjavax.swing.*
publicclassTesteJTextFieldextendsJFrame{
publicTesteJTextField(){
super("TesteJTextField")
this.setDefaultCloseOperation(EXIT_ON_CLOSE)
Containerc=getContentPane()
JTextFieldtextField=newJTextField()
c.add(textField)
setSize(200,50)
show()
}
publicstaticvoidmain(Stringargs[]){
TesteJTextFieldt=newTesteJTextField()
}
}
MtodosparamanipulaodocontedodeumJTextField
StringgetText():retornaovalordotextocontidonoJTextField
voidsetText(Stringtexto):atribuiovalordavariveltextoaoJTextField
voidsetEditable(booleaneditable): habilitaoudesabilitaocomponentedetexto.Estemtodo
herdadodaclasseJTextComponent.
2InterfacesgrficascomJavaeNetBeans
Anotaes
3 38 8
2.2.3 javax.swing.JCheckbox
Um JCheckBox um componente grfico com dois possveis estados: selecionado" (true) ou "no
selecionado"(false).
Algunsconstrutores
JCheckBox(Stringtexto)
JCheckBox(Iconicone)
JCheckBox(Stringicone,booleanselected)
JCheckBox(Iconicone,booleanselected)
Exemplo:TesteJCheckbox.java
packagebr.com.globalcode.swing
importjava.awt.*
importjavax.swing.*
publicclassTesteJCheckboxextendsJFrame{
publicTesteJCheckbox(){
super("TesteJCheckbox")
setDefaultCloseOperation(EXIT_ON_CLOSE)
Containerc=getContentPane()
JPanelpOpcoes=montaPanelOpcoes()
c.add(pOpcoes)
setSize(275,100)
show()
}
publicJPanelmontaPanelOpcoes(){
JPanelp=newJPanel()
p.add(newJCheckbox("Opo1"))
//Podemosindicarqualoitemselecionado
p.add(newJCheckbox("Opo2",true))
p.add(newJCheckbox("Opo3"))
returnp
}
publicstaticvoidmain(Stringargs[]){
TesteJCheckboxt=newTesteJCheckbox()
}
}
TreinamentonaPlataformaNetBeans
Anotaes
3 39 9
2.2.4 javax.swing.JComboBox
Construtores
JComboBox()
JComboBox(Object[]itens)
JComboBox(Vectoritens).
Principaismtodos
voidaddItem(Objecto):adicionaumitemnaultimaposio
ObjectgetSelectedItem():retornaoitemselecionado
voidinsertItemAt(Objectitem,intposicao):insereumobjetonaposioespecificada
ObjectgetItemAt(intposio): retorna o item que estiver na posio especificada ou null se
elenoexistir
voidremoveAllItens():removetodosositensdoJComboBox
voidremoveItemAt(intposicao):removeoitemqueestivernaposioespecificada
voidsetEnabled(booleanhabilitado):habilitaounooJComboBox
voidsetSelectedItem(Objectitem):configuraqualseroitemselecionado
void setSelectedIndex(int posicao): configura qual ser o item selecionado atravs da sua
posionoJComboBox.
O componente JComboBox apresenta uma lista com scroll de itens, podendo ser configurado para que cada
elementopossasereditvel.
possvel construirmos um JComboBox passando como parmetro um Vector, contendo os elementos que
queremos exibir no JComboBox o texto exibido ser o resultado da chamada ao mtodo toString de cada
componente.
Neste exemplo, estamos adicionando objetos do tipo String ao JComboBox atravs do mtodo
addItem(String)
2InterfacesgrficascomJavaeNetBeans
Anotaes
4 40 0
Exemplo:TesteJComboBox.java
packagebr.com.globalcode.swing
importjava.awt.*
importjavax.swing.*
publicclassTesteJComboBoxextendsJFrame{
publicTesteJComboBox(){
super("TesteJComboBox")
setDefaultCloseOperation(EXIT_ON_CLOSE)
Containerc=getContentPane()
JComboBoxseletorBancos=newJComboBox()
seletorBancos.addItem("Itau")
seletorBancos.addItem("Bradesco")
seletorBancos.addItem("GlobalcodeBank")
c.add(seletorBancos)
setSize(275,50)
show()
}
publicstaticvoidmain(Stringargs[]){
TesteJComboBoxt=newTesteJComboBox()
}
}
TreinamentonaPlataformaNetBeans
Anotaes
4 41 1
2.2.5 javax.swing.JLi st
OcomponenteJListapresentaumalistacomscrolldeitens,podendoserconfiguradoparaqueousuriopossa
selecionar apenas um ou mltiplos itens. possvel adicionar qualquer componente. Construmos um JList
passando como parmetro um Vector, contendo os elementos que queremos exibir, o texto exibido ser o
resultadodachamadaaomtodotoStringdecadacomponente.
Construtores
JList()
JList(Object[]itens)
JList(Vectoritens).
Principaismtodos
intgetSelectedIndex():retornaondicedoprimeiroitemselecionado
int[] getSelectedIndices(): retorna um array de inteiros contendo os indices dos itens
selecionados
ObjectgetSelectedValue():retornaoprimeiroitemselecionado
Object[]getSelectedValues():retornaumarraydeobjetoscontendoositensselecionados.
VamosutilizaraclasseClientedefinidaabaixoparaadicionarnocomponenteJList.
Exemplo:Cliente.java
packagebr.com.globalcode.beans
publicclassCliente{
privateStringnome
privateintid
privateStringtelefone
publicCliente(Stringnome,intid,Stringtelefone){
this.setNome(nome)
this.setId(id)
this.setTelefone(telefone)
}
//Estamosomitindoosgettersesetters
publicStringtoString(){
return"["+id+"]"+nome
}
}
2InterfacesgrficascomJavaeNetBeans
Anotaes
4 42 2
Exemplo:TesteJList.java
packagebr.com.globalcode.swing
importjava.awt.*
importjava.util.Vector
importjavax.swing.*
importbr.com.globalcode.beans.Cliente
publicclassTesteJListextendsJFrame{
publicTesteJList(){
super("TesteJList")
setDefaultCloseOperation(EXIT_ON_CLOSE)
Containerc=getContentPane()
Vectorclientes=newVector()
Clientec1=newCliente("Waldir",1,"213213")
Clientec2=newCliente("AnaPaula",2,"1211213")
Clientec3=newCliente("Ricardo",3,"45454545")
clientes.add(c1)
clientes.add(c2)
clientes.add(c3)
JListlistClientes=newJList(clientes)
c.add(listClientes)
setSize(275,100)
show()
}
publicstaticvoidmain(Stringargs[]){
TesteJListt=newTesteJList()
}
}
TreinamentonaPlataformaNetBeans
Anotaes
4 43 3
2.2.6 ConstruindoMenus
javax.swing.JMenuBar
A classe JMenuBar representa uma barra de menu de um JFrame. Para associla a um JFrame, o mtodo
setJMenuBardaclasseJFramedeveserchamado,passandooprprioJMenuBarcomoparmetro.
Umabarrademenupodeteratalhosparaseusitens.CadamenupodeterumainstnciadeMenuShortcut.A
classeJMenuBarpossuidiversosmtodosparagerenciaratalhosdeteclado,semelhantementeaoqueexistea
classeJbutton.
javax.swing.JMenu
UmobjetodaclasseJMenurepresentaumitemdeumcomponentedemenu,alocadoemumabarra(JMenuBar).
javax.swing.JMenuItem
TodosositensdeummenudevempertencerclasseJMenuItemouumadesuassubclasses.
Exemplo:TesteJMenu.java
packagebr.com.globalcode.swing
importjavax.swing.*
publicclassTesteJMenuextendsJFrame{
publicTesteJMenu(){
super("TesteMenuGlobalcode!")
JMenuBarmenu=this.montaMenu()
setJMenuBar(menu)
setSize(250,150)
show()
}
publicJMenuBarmontaMenu(){
JMenuBarbarraMenu=newJMenuBar()
//MontandoomenuConta
JMenumenuConta=newJMenu("Conta")
JMenuItemitem1menuConta=newJMenuItem("NovaConta")
JMenuItemitem2menuConta=newJMenuItem("EditarConta")
JMenuItemitem3menuConta=newJMenuItem("ListarContas")
menuConta.add(item1menuConta)
menuConta.add(item2menuConta)
menuConta.add(item3menuConta)
2InterfacesgrficascomJavaeNetBeans
Anotaes
4 44 4
//MontandoomenuHelp
JMenumenuHelp=newJMenu("Help")
JMenuItemitem1menuHelp=newJMenuItem("GlobalcodeBankHelp")
JMenuItemitem2menuHelp=newJMenuItem("Problemascomuns")
JMenuItemitem3menuHelp=newJMenuItem("AjudaOnline")
menuHelp.add(item1menuHelp)
menuHelp.add(item2menuHelp)
menuHelp.add(item3menuHelp)
//AdicionandoosmenusContaeHelpabarradeMenus
barraMenu.add(menuConta)
barraMenu.add(menuHelp)
returnbarraMenu
}
publicstaticvoidmain(Stringargs[]){
TesteJMenut=newTesteJMenu()
}
}
MenuItem
MenuBar
Menu
TreinamentonaPlataformaNetBeans
Anotaes
4 45 5
2.3 GerenciadoresdeLayout
Paraorganizaodasdisposiesdoscomponentesdentrodasjanelas,contamoscomoconceitodeclassesde
Gerenciamento de Layouts. Para cada container (Panel/JPane, Dialog/JDialog, Frame/JFrame etc.)
podemosescolherumtipodeorganizadordelayoutdiferente,conformeanecessidade.
Para controlarmos o tamanho e posio dos nossos componentes utilizamos um dos mtodos a seguir:
setLocation,setSizeesetBounds.
Noentanto,comousodosgerenciadoresdelayout,estaremoscriandoumprogramadependentedeplataforma,
poiscadasistemaoperacionalpodetrabalharcomservidoresgrficosdiferentesqueterooutrasfontesdeletrae
noesdedimensionamento.
Osorganizadores(LayoutManager)ficaroresponsveispeloalinhamentoeposicionamentodoscomponentesna
interfacegrfica,podemoscontrolaroscomponentesmanualmente,eliminandoo:
JPanelp1=newJPanel()
p1.setLayout(null)
AscincoimplementaesdeLayoutManagerso:
FlowLayout
BorderLayout
GridLayout
CardLayout
GridBagLayout
OtipodefaultparaFrameeDialogBorderLayouteparaPaneleAppletFlowLayout.
Tambm possvel criarmos uma subclasse da interface LayoutManager para gerar nosso organizador de
layout.
2.3.1 java.awt.FlowLayout
QuandousamosoFlowLayoutoscomponentessoadicionadosdaesquerdaparaadireitadareadisponvel
dentrodocontainer.
Oalinhamentodefaultdentrodareacentralizado,sendopossvelmodificlo.
Algumasconstantesparaalinhamento
finalstaticintCENTER
finalstaticintLEFT
finalstaticintRIGHT
2InterfacesgrficascomJavaeNetBeans
Anotaes
4 46 6
Construtores
FlowLayout()
FlowLayout(intalign):Normalmenteutilizasealgumadasconstantesparaalinhamento
FlowLayout(intalign,inthgap,intvgap): Indica qual o tipo de alinhamento desejado alm
dosespaamentos(empixels)dotopodatela,tantoemtermosverticaiscomoemtermoshorizontais.
Exemplo:TesteFlowLayout.java
packagebr.com.globalcode.swing
importjava.awt.Container
importjava.awt.FlowLayout
importjavax.swing.*
importjavax.swing.JPanel
importjavax.swing.JButton
publicclassTesteFlowLayoutextendsJFrame{
publicTesteFlowLayout(){
super("TesteFlowLayoutGlobalcode!")
Containerc=getContentPane()
JPanelpBotoes=montaJPanelBotoes()
c.add(pBotoes)
setSize(275,100)
show()
}
publicJPanelmontaJPanelBotoes(){
JPanelp=newJPanel()
p.setLayout(newFlowLayout(FlowLayout.CENTER))
p.add(newJButton("Salvar"))
p.add(newJButton("Excluir"))
returnp
}
publicstaticvoidmain(Stringargs[]){
TesteFlowLayoutt=newTesteFlowLayout()
}
}
TreinamentonaPlataformaNetBeans
Anotaes
4 47 7
2.3.2 java.awt.GridLayout
Estegerenciadordelayoutdivideareadisponvelemlinhasecolunas,numesquemasemelhanteaumaplanilha
declculos.
Os componentes so adicionados da esquerda para direita e de cima para baixo, na ordem de chamada do
mtodoadd.
O nico inconveniente que todas as clulas tm o mesmo tamanho, ou seja, se quisermos adicionar um
pequeno texto e uma grande rea de texto, dentro do GridLayout, ambos tero o mesmo tamanho, como
poderemosobservarnoexemploabaixo.
Exemplo:TesteGridLayout.java
packagebr.com.globalcode.swing
importjava.awt.Container
importjava.awt.GridLayout
importjavax.swing.JFrame
importjavax.swing.JPanel
importjavax.swing.JTextField
importjavax.swing.JLabel
publicclassTesteGridLayoutextendsJFrame{
publicTesteGridLayout(){
super("TesteGridLayoutGlobalcode!")
Containerc=getContentPane()
JPanelpLogin=montaJPanelLogin()
c.add(pLogin)
this.setSize(400,150)
this.show()
}
publicJPanelmontaJPanelLogin(){
JPanelp=newJPanel()
JTextFieldtfNumeroConta=newJTextField("",10)
JTextFieldtfAgencia=newJTextField("",10)
JTextFieldtfBanco=newJTextField("",10)
JTextFieldtfLimite=newJTextField("",10)
JTextFieldtfCorrentista=newJTextField("",30)
p.setLayout(newGridLayout(5,2))
2InterfacesgrficascomJavaeNetBeans
Anotaes
4 48 8
p.add(newJLabel("Numerodaconta"))
p.add(tfNumeroConta)
p.add(newJLabel("Agencia"))
p.add(tfAgencia)
p.add(newJLabel("Banco"))
p.add(tfBanco)
p.add(newJLabel("Limite"))
p.add(tfLimite)
p.add(newJLabel("Correntista"))
p.add(tfCorrentista)
returnp
}
publicstaticvoidmain(Stringargs[]){
TesteGridLayoutt=newTesteGridLayout()
}
}
TreinamentonaPlataformaNetBeans
Anotaes
4 49 9
2.3.3 java.awt.BorderLayout
Organizadorpadroparaframesondeoscomponentessoadicionadosemcincoreasdeterminadasedefinidas
atravsdeconstantesnumricas:
finalstaticStringNORTH:NORTE
finalstaticStringSOUTH:SUL
finalstaticStringEAST:LESTE
finalstaticStringWEST:OESTE
finalstaticStringCENTER:CENTRO.
Construtores
BorderLayout()
BorderLayout(inthgap,intvgap).
Exemplo:TesteBorderLayout.java
packagebr.com.globalcode.swing
importjava.awt.BorderLayout
importjava.awt.FlowLayout
importjava.awt.Container
importjava.awt.GridLayout
importjavax.swing.*
publicclassTesteBorderLayoutextendsJFrame{
publicTesteBorderLayout(){
super("TesteBorderLayoutGlobalcode!")
Containerc=getContentPane()
setSize(400,200)
c.setLayout(newBorderLayout())
JPanelpBotoes=montaJPanelBotoes()
JPanelpLogin=montaJPanelLogin()
c.add(newJLabel("BorderLayoutnaposioNORTH"),BorderLayout.NORTH)
c.add(pBotoes,BorderLayout.SOUTH)
c.add(pLogin,BorderLayout.CENTER)
show()
}
2InterfacesgrficascomJavaeNetBeans
Anotaes
5 50 0
publicJPanelmontaJPanelBotoes(){
JPanelp=newJPanel()
p.setLayout(newFlowLayout(FlowLayout.CENTER))
JButtonbSalvar=newJButton("Salvar")
p.add(bSalvar)
JButtonbExcluir=newJButton("Excluir")
p.add(bExcluir)
returnp
}
publicJPanelmontaJPanelLogin(){
JPanelp=newJPanel()
p.setLayout(newGridLayout(5,2))
JTextFieldtfNumeroConta=newJTextField("",10)
JTextFieldtfAgencia=newJTextField("",10)
JTextFieldtfBanco=newJTextField("",10)
JTextFieldtfLimite=newJTextField("",10)
JTextFieldtfCorrentista=newJTextField("",30)
p.add(newJLabel("Numerodaconta"))
p.add(tfNumeroConta)
p.add(newJLabel("Agencia"))
p.add(tfAgencia)
p.add(newJLabel("Banco"))
p.add(tfBanco)
p.add(newJLabel("Limite"))
p.add(tfLimite)
p.add(newJLabel("Correntista"))
p.add(tfCorrentista)
returnp
}
publicstaticvoidmain(Stringargs[]){
TesteBorderLayoutt=newTesteBorderLayout()
}
}
TreinamentonaPlataformaNetBeans
Anotaes
5 51 1
2.3.4 FreeLayout
ONetBeans5ganhoudiversasfacilidadesadicionaisparaodesenvolvimentodeumainterfacegrfica.Umadas
questespolmicasdaAPISwingsoosgerenciadoresdelayout,poisaomesmotempoquetrazemindiscutveis
benefcios para o desenvolvimentomultiplataforma, acabou tornando o desenvolvimento de uma tela um pouco
burocrtico.
O NetBeans 4 j contava com um recurso chamadoGridBagLayoutEditor quefacilita bastante as configuraes
daquela dzia de parmetros de dimensionamento, margem, mescla de clulas etc. O que dizem que
GridBagLayoutfcil,depoisquevocaprende...ErealmenteumatelabemfeitacomGridBagLayoutconquista
umusurio.
AgoraparaficarmaisfcilaindaogrupoNetBeansdesenvolveuoMatisse,quecontacomumnovoorganizador
de layout, ainda especfico do NetBeans porm ser agregado na plataforma padro no futuro. Tratase do
FreeLayout,umgerenciadorquepermitequevocdesenvolvaumatelacommoslivres,comoNullLaytouteo
gerenciador vai te ajudando com recursos do tipo SnapToGrid, sugerindo a posio ideal do componente,
seguindomelhoresprticasepadrodedesenvolvimentodetelascomsemnticaamplamenteaceita.
2InterfacesgrficascomJavaeNetBeans
Anotaes
5 52 2
2.4 Eventos
Eventos so aes que um usurio executa na interface grfica. Temos 3 componentes muito importantes no
tratamentodeeventos:
oobjetoquerepresentaoevento
ogeradordoevento
aquelequetrataoeventogerado.
Vejamosadescrioabaixo:
1.Events
Objeto que descreve o evento gerado. Por exemplo, um click de mouse, uma tecla pressionada, ou uma
minimizaodeumajanela.
Existemdiversostiposdeeventosvejaalgunsexemplos:
MouseEvent:eventosdemouse
KeyEvent:eventosdeteclado
WindowEvent:eventosdejanela
DiagramaUMLrepresentandoahierarquiadealgumasclassesquerepresentameventos:
TreinamentonaPlataformaNetBeans
Anotaes
5 53 3
2.EventSources
Geradordoevento:botes,comboboxes,janelas,listas,entreoutros.
3.EventHandlers
Mtodosquerecebemumobjetoeventoeexecutamasfuncionalidadesdefinidaspeloevento.Normalmenteso
programadosdentrodeclasseschamadaslisteners.
Todo evento enviado para o componente o que gerou, mas cada componente pode propaglo para uma ou
maisclassesregistradascomoListeners.
2InterfacesgrficascomJavaeNetBeans
Anotaes
5 54 4
2.4.1 Listeners
Listenerscontmeventhandlers(mtodos)querecebemeprocessamoevento.Destamaneira,ogerenciadorde
eventospodeserumobjetoseparadodocomponente.
Geralmente, listeners so criados implementando interfaces. Por exemplo, se quisermos criar um listener para
ouvir eventos de mouse (MouseEvent), devemos criar uma classe que implemente a interface
MouseListener.Analogamentehdiversasinterfacesqueespecificamlisteners.
Vejamosalgunsexemplos:
MouseListener
KeyListener
WindowListener
ActionListener.
Cadacomponentepodedisparareventosdeumaoumaisinterfaces.
Hierarquiadealgumasinterfacesquerepresentamlisteners:
AclasseComponent,superclassedepraticamentetodososcomponentesAWTeSwing,definediversosmtodos
para associar um listener ao nosso componente, possibilitando programar a tarefa que dever ser realizada
quandooseventosesperadosacontecerem.
TreinamentonaPlataformaNetBeans
Anotaes
5 55 5
AlgunsmtodosdefinidospelaclasseComponentso:
addKeyListener(KeyListener listener): mtodo para associar um KeyListener a um
componente
addMouseListener(MouseListenerlistener): mtodo para associar um MouseListener a um
componente.
AlgunsmtodosdaclasseAbstractButton,queasuperclassedeJButtoneJMenuItem
addActionListener(ActionListenerlistener): mtodo para adicionar um ActionListener a
umJButtonouJMenuItem(ouqualqueroutraclassederivadadeAbstractButton).
addItemListener(ItemListener listener): mtodo para associar um ItemListener para um
JButtonouJMenu(ouqualqueroutraclassederivadadeAbstractButton).
Imprimirumtextonaconsolequandoumbotoforclicado:
Instancia um objeto cuja classe implementa MouseListener, que a interface que especifica os
eventos de mouse, no mtodo adequado iremos programar a impresso na console, que no nosso
casoaoperaodesejada.
Instanciarumobjetodestaclasse.
Associaresteobjetoaoboto.
Quandoumusurioclicaemumbotocomomouse,omtodorespectivodeMouseListenerserexecutado.
Aimplementaodestainterfacepodeocorrerdediversasformas,comosesegue.
2InterfacesgrficascomJavaeNetBeans
Anotaes
5 56 6
2.4.2 Umaclasseexternai mpl ementaainterface j ava.awt.XXXLi stener
TemosdiversastcnicasdeorientaoaobjetosnoJavaparaimplementarmosinterfaceseclassesdeeventos.
UmadelasquandoainterfacelistenerimplementadaporumaclasseindependentedoJFrame.
NesteexemploveremosainterfaceMouseListener,quecontmcincomtodos:
publicvoidmousePressed(MouseEvente)
publicvoidmouseReleased(MouseEvente)
publicvoidmouseEntered(MouseEvente)
publicvoidmouseExited(MouseEvente)
publicvoidmouseClicked(MouseEvente)
Noexemploabaixo,criamosumaclassechamadaEventosMousequeimplementatodososmtodosdainterface
MouseListener.
A implementao bem simples e apenas imprime uma mensagem na console atravs da chamada ao
System.out.println().
Depois disto, associaremos uma instncia de EventosMouse ao boto cujos cliques queremos monitorar ou
reagir.
Exemplo:EventosMouse.java
packagebr.com.globalcode.gui.eventos
importjava.awt.event.MouseEvent
importjava.awt.event.MouseListener
publicclassEventosMouseimplementsMouseListener{
/***********************************************************************
*Implementamos,namesmaclasse,osmetodosdainterfaceMouseListener
***********************************************************************/
publicvoidmousePressed(MouseEvente){
System.out.println("MousePressed")
}
publicvoidmouseReleased(MouseEvente){
System.out.println("mouseReleased")
}
publicvoidmouseEntered(MouseEvente){
System.out.println("mouseEntered")
}
publicvoidmouseExited(MouseEvente){
System.out.println("mouseExited")
}
publicvoidmouseClicked(MouseEvente){
System.out.println("mouseClicked")
}
}
TreinamentonaPlataformaNetBeans
Anotaes
5 57 7
Apresentamos agora a classe TesteMouseListener, que tem um JPanel com um boto. O objetivo
monitorar todos os eventos possveis que so gerados com o mouse sobre o boto, assim associaremos um
MouseListener ao boto, (implementao da interface MouseListener) que uma instncia da classe
EventosMouse.
Exemplo:TesteMouseListener.java
packagebr.com.globalcode.swing
importjava.awt.Container
importjavax.swing.JButton
importjavax.swing.JFrame
importjavax.swing.JPanel
importbr.com.globalcode.gui.eventos.*
publicclassTesteMouseListenerextends
JFrame{
publicTesteMouseListener(String
tituloJanela){
super(tituloJanela)
Containerc=getContentPane()
JPanelp1=newJPanel()
JButtonb1=newJButton("Boto1")
p1.add(b1)
c.add(p1)
EventosMouselistener=newEventosMouse()
b1.addMouseListener(listener)
setSize(200,200)
show()
}
publicstaticvoidmain(Stringargs[]){
TesteMouseListenerframe=newTesteMouseListener("TesteMouseListener")
}
}
OsmtodosdoEventosMousesoexecutadosnosseguintescasos:
mouseEntered:quandoomousepassasobreodesenhodoboto
mousePresed:quandopressionamosobotodomousesobreoJButton
mouseChecked: quando pressionamos e soltamos um dos botes do mouse rapidamente sobre o
JButton
mouseRelease:quandosoltamosobotodomouseforadoJButton.
2InterfacesgrficascomJavaeNetBeans
Anotaes
5 58 8
2.4.3 Aprpri acl assei mpl ementaainterface java.awt.event.XXXListener
TambmpodemosfazercomqueaprpriaclassequeestendeJFrameimplementeainterfaceMouseListener,
ouqualqueroutroXXXListener.
Noexemploanterior,nohouvemanipulaodeoutroscomponentesdopainel,noentanto,podesernecessrio
leroualterarvaloresdecaixasdetexto,botes,listaseoutroscomponentes.Nestecaso,importantedeixaros
componentes a serem manipulados como atributos da classe, para que estejam acessveis no mtodo que ir
manipullos,enocomovariveislocaisdeclaradasnosmtodos.
O exemplo abaixo uma continuao do exemplo anterior, mas agora adicionamos um JLabel contendo um
textoqueirsermodificadodeacordocomoseventosdomousesobreoboto.
AgoranosmtodoscomomouseClicked,mouseReleased,vamosalterarovalordolabel lTexto,quecomo
foideclaradocomoatributodaclasse.
Exemplo:TesteMouseListener2.javaalterandocomponentesdoJPanel
packagebr.com.globalcode.swing
importjava.awt.Container
importjava.awt.event.MouseEvent
importjava.awt.event.MouseListener
importjavax.swing.JButton
importjavax.swing.JFrame
importjavax.swing.JLabel
importjavax.swing.JPanel
publicclassTesteMouseListener2extendsJFrameimplementsMouseListener{
privateJLabellTexto=newJLabel("Textoinicial")
publicTesteMouseListener2(StringtituloJanela){
super(tituloJanela)
Containerc=getContentPane()
JPanelp1=newJPanel()
JButtonb1=newJButton("Boto1")
p1.add(b1)
p1.add(lTexto)
c.add(p1)
//thispoisainterfaceestaimplementadaaquimesmo
b1.addMouseListener(this)
setSize(200,200)
show()
}
TreinamentonaPlataformaNetBeans
Anotaes
5 59 9
/***********************************************************************
*Implementamos,namesmaclasse,osmetodosdainterfaceMouseListener
***********************************************************************/
publicvoidmousePressed(MouseEvente){
lTexto.setText("MousePressed")
System.out.println("MousePressed")
}
publicvoidmouseReleased(MouseEvente){
lTexto.setText("mouseReleased")
System.out.println("mouseReleased")
}
publicvoidmouseEntered(MouseEvente){
lTexto.setText("mouseEntered")
System.out.println("mouseEntered")
}
publicvoidmouseExited(MouseEvente){
lTexto.setText("mouseExited")
System.out.println("mouseExited")
}
publicvoidmouseClicked(MouseEvente){
lTexto.setText("mouseClicked")
System.out.println("mouseClicked")
}
publicstaticvoidmain(Stringargs[]){
TesteMouseListener2frame=newTesteMouseListener2("TesteMouseListener")
}
}
2InterfacesgrficascomJavaeNetBeans
Anotaes
6 60 0
2.4.4 Impl ementandoo listenercomoumacl assei nterna(Innerclass)
OutraabordagembastantecomumautilizaodeInnerclasses,ouseja,classesdeclaradasdentrodaprpria
classe.
Aclasseinterna(innerclass)temacessoirrestritoatodososatributosdaclassequeacontm,chamadaclasse
externa(Outerclass).
Sintaxe
classExemploInnerClass{
classInnerClass{
}
}
Agora criaremos uma inner class para a classe TesteMouseListener mas, ao invs de implementarmos
diretamenteainterfaceMouseListener,estenderemosaclasseMouseAdapterque,porsuavez,implementa
a interface MouseListener. Desta forma, no precisamos implementar todos os mtodos em branco,
sobrescrevendoapenasosmtodosdesejados.
Exemplo:TesteMouseListener3.java
packagebr.com.globalcode.swing
importjava.awt.Container
importjava.awt.event.MouseAdapter
importjava.awt.event.MouseEvent
importjavax.swing.JButton
importjavax.swing.JFrame
importjavax.swing.JLabel
importjavax.swing.JPanel
publicclassTesteMouseListener3extendsJFrame{
privateJLabellTexto=newJLabel("Textoinicial")
publicTesteMouseListener3(StringtituloJanela){
super(tituloJanela)
Containerc=getContentPane()
JPanelp1=newJPanel()
JButtonb1=newJButton("Boto1")
p1.add(b1)
p1.add(lTexto)
c.add(p1)
EventosMouselistener=newEventosMouse()
b1.addMouseListener(listener)
setSize(200,200)
TreinamentonaPlataformaNetBeans
Anotaes
6 61 1
show()
}
/***********************************************************************
*EstendemosMouseAdapteredestaformanaoenecessarioimplementarmos
*todososseusmetodos,apenassobrescrevemososnecessarios.
***********************************************************************/
publicclassEventosMouseextendsMouseAdapter{
publicvoidmouseClicked(MouseEvente){
lTexto.setText("mouseClicked")
System.out.println("mouseClicked")
}
}
publicstaticvoidmain(Stringargs[]){
TesteMouseListener3frame=newTesteMouseListener3("TesteMouseListener")
}
}
2.4.5 Impl ementandoolistenercomoumacl asseannima
Outrapossvelestratgiaparaimplementaodelistenersautilizaodeclassesannimas,quenopossuem
umnomeesointeiramentedeclaradasdentrodapassagemdeparmetrodomtodoaddXXXListener.
ExemplodeClasseAnnima:
addMouseListener(newMouseAdapter(){
publicvoidmouseClicked(MouseEvente){
lTexto.setText("mouseClicked")
System.out.println("mouseClicked")
}
}
)
Exemplo: TesteMouseListener4.java
packagebr.com.globalcode.swing
importjava.awt.Container
importjava.awt.event.MouseAdapter
importjava.awt.event.MouseEvent
importjavax.swing.JButton
importjavax.swing.JFrame
importjavax.swing.JLabel
importjavax.swing.JPanel
publicclassTesteMouseListener4extendsJFrame{
privateJLabellTexto=newJLabel("Textoinicial")
publicTesteMouseListener4(StringtituloJanela){
super(tituloJanela)
Containerc=getContentPane()
2InterfacesgrficascomJavaeNetBeans
Anotaes
6 62 2
JPanelp1=newJPanel()
JButtonb1=newJButton("Boto1")
p1.add(b1)
p1.add(lTexto)
c.add(p1)
b1.addMouseListener(newMouseAdapter(){
publicvoidmouseClicked(MouseEvente){
lTexto.setText("mouseClickedINNER")
System.out.println("mouseClickedINNER")
}
})
setSize(200,200)
show()
}
publicstaticvoidmain(Stringargs[]){
TesteMouseListener4frame=newTesteMouseListener4("TesteMouseListener")
}
}
TreinamentonaPlataformaNetBeans
Anotaes
6 63 3
2.4.6 Ainterface java.awt.event.Acti onLi stener
Alguns objetos no so sensveis a aes do mouse atravs de MouseListeners, como o caso de
JComboBox.NestassituaesutilizaseainterfaceActionListener(maisgenrica)equerespondeaeventos
atravsdeumnicomtodo:actionPerformed.
A interface ActionListener tambm responde a eventos como ALT+tecla de atalho nos botes que,
evidentemente,nosogerenciadosatravsdoMouseListener.
VejaumexemplodeutilizaodeActionListeneraseguir,ondequeremosque,aoselecionarmosumbanco,
seunomeapareanoJTextField.
Exemplo:TesteEventosJComboBox.java
packagebr.com.globalcode.swing
importjava.awt.*
importjava.awt.event.ActionEvent
importjava.awt.event.ActionListener
importjavax.swing.*
publicclassTesteEventosJComboBoxextendsJFrame{
//oseletorBancosseramanipuladonohandleractionPerfomedeporistoe
//necessariodeclaralocomoatributodaclasse.
privateJComboBoxseletorBancos=newJComboBox()
privateJTextFieldtfBanco=newJTextField()
publicstaticvoidmain(Stringargs[]){
TesteEventosJComboBoxt=newTesteEventosJComboBox()
}
publicTesteEventosJComboBox(){
super("TesteEventosJComboBox")
setDefaultCloseOperation(EXIT_ON_CLOSE)
Containerc=getContentPane()
c.setLayout(newGridLayout(2,1))
seletorBancos.addItem("Itau")
seletorBancos.addItem("Bradesco")
seletorBancos.addItem("GlobalcodeBank")
seletorBancos.addActionListener(newSeletorBancosHandler())
c.add(seletorBancos)
c.add(tfBanco)
setSize(275,100)
show()
}
2InterfacesgrficascomJavaeNetBeans
Anotaes
6 64 4
classSeletorBancosHandlerimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
System.out.println("Itemselecionado:"+seletorBancos.getSelectedItem())
tfBanco.setText(seletorBancos.getSelectedItem().toString())
}
}
}
Emseguida,umexemplodeutilizaodeActionListener,ondeomtodoactionPerformedserexecutado
quando um boto for ativado pelo atalho configurado, ou ento, selecionando o boto atravs da utilizao da
tecla<TAB>epressionadocomatecla<ESPAO>.
Exemplo:TesteEventosJButton.java
packagebr.com.globalcode.swing
importjava.awt.*
importjava.awt.event.*
importjavax.swing.*
publicclassTesteEventosJButtonextendsJFrame{
privateJButtonbotao1=newJButton("botao1")
privateJButtonbotao2=newJButton("botao2")
privateJLabellTexto=newJLabel("ao")
publicTesteEventosJButton(){
super("TesteEventosJComboBox")
setDefaultCloseOperation(EXIT_ON_CLOSE)
Containerc=getContentPane()
c.setLayout(newGridLayout(3,1))
botao1.setMnemonic(KeyEvent.VK_1)
botao2.setMnemonic(KeyEvent.VK_2)
botao1.addActionListener(newBotaoHandler())
botao2.addActionListener(newBotaoHandler())
c.add(botao1,BorderLayout.NORTH)
c.add(lTexto,BorderLayout.CENTER)
c.add(botao2,BorderLayout.SOUTH)
setSize(275,100)
show()
TreinamentonaPlataformaNetBeans
Anotaes
6 65 5
}
classBotaoHandlerimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
System.out.println("Botaoativado:"+e.getActionCommand())
lTexto.setText("Botaoativado:"+e.getActionCommand())
}
}
publicstaticvoidmain(Stringargs[]){
TesteEventosJButtont=newTesteEventosJButton()
}
}
2InterfacesgrficascomJavaeNetBeans
Anotaes
6 66 6
2.5 Componentesavanados
Neste tpico, iremos estudar alguns componentes avanados de Swing bastante interessantes. Contudo, no
detalharemossobrecadaumdelesfocandoapenasemmostrarasuautilizao.
2.5.1 Aclasse javax.swing.JFi leChooser
Estecomponenteutilizadoparaabrirumajaneladeseleodearquivos.Existemdiversasconstantesdaclasse,
quedevemserutilizadasparaobterasoperaesrealizadaspelousurioparaconfigurarocomponente.
Exemplo:TesteFileChooser.java
packagebr.com.globalcode.swing.components
importjava.awt.*
importjava.awt.event.*
importjavax.swing.*
publicclassTesteFileChooserextendsJFrame{
privateJFileChooserfileChooser=newJFileChooser()
privateJButtonbotaoOk=newJButton("Escolher")
privateJLabellNomeArquivo=newJLabel("")
privateJFrameeu=this
publicTesteFileChooser(){
super("TesteFileChooser")
setDefaultCloseOperation(EXIT_ON_CLOSE)
Containerc=getContentPane()
c.setLayout(newGridLayout(3,1))
Stringmsg="Cliquenobotaoparaescolherumarquivo"
JLabellDigiteNomeArquivo=newJLabel(msg)
c.add(lDigiteNomeArquivo)
c.add(botaoOk)
c.add(lNomeArquivo)
botaoOk.addActionListener(newAbrirArquivoHandler())
setSize(250,100)
show()
}
classAbrirArquivoHandlerimplementsActionListener{
TreinamentonaPlataformaNetBeans
Anotaes
6 67 7
publicvoidactionPerformed(ActionEvente){
//Indicaqueajaneladeescolhadearquivoseraaberta
intopcao=fileChooser.showOpenDialog(eu)
//SeaopcaoforOPEN
if(opcao==JFileChooser.APPROVE_OPTION){
StringarquivoSelecionado=fileChooser.getSelectedFile().getName()
lNomeArquivo.setText(arquivoSelecionado)
}
//SeaopcaoforCANCEL
elseif(opcao==JFileChooser.CANCEL_OPTION){
lNomeArquivo.setText("Operaocancelada")
}
}
}
publicstaticvoidmain(Stringargs[]){
TesteFileChoosert=newTesteFileChooser()
}
}
2InterfacesgrficascomJavaeNetBeans
Anotaes
6 68 8
2.5.2 javax.swing.JTabbedPane
packagebr.com.globalcode.swing.components
importjava.awt.event.KeyEvent
importjavax.swing.*
publicclassTesteTabbedPaneextendsJFrame{
publicTesteTabbedPane(){
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
JTabbedPanetabbedPane=newJTabbedPane()
JPanelpanel1=newJPanel()
panel1.add(newJLabel("Panel1"))
JPanelpanel2=newJPanel()
panel2.add(newJLabel("Panel2"))
JPanelpanel3=newJPanel()
panel3.add(newJLabel("Panel3"))
JPanelpanel4=newJPanel()
panel4.add(newJLabel("Panel4"))
tabbedPane.addTab("Tab1",panel1)
tabbedPane.setMnemonicAt(0,KeyEvent.VK_1)
tabbedPane.addTab("Tab2",panel2)
tabbedPane.setMnemonicAt(1,KeyEvent.VK_2)
tabbedPane.addTab("Tab3",panel3)
tabbedPane.setMnemonicAt(2,KeyEvent.VK_3)
tabbedPane.addTab("Tab4",panel4)
tabbedPane.setMnemonicAt(3,KeyEvent.VK_4)
this.getContentPane().add(tabbedPane)
this.setSize(300,300)
this.show()
}
publicstaticvoidmain(String[]args){
TesteTabbedPanetp=newTesteTabbedPane()
}
}
TreinamentonaPlataformaNetBeans
Anotaes
6 69 9
2.5.3 javax.swing.JTree
Estecomponenteutilizadopararepresentarumaestruturanaformadervore.Cadandarvore,sejaumn
ouumaramificao,representadoporumobjetodaclasseDefaultMutableTreeNode.
Exemplo:br.com.globalcode.swing.components.TesteJTree
packagebr.com.globalcode.swing.components
importjavax.swing.*
importjavax.swing.event.*
importjavax.swing.tree.DefaultMutableTreeNode
publicclassTesteJTreeextendsJFrame{
privateJTreetree=null
publicTesteJTree(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
DefaultMutableTreeNodeturmas=newDefaultMutableTreeNode("Turmas")
tree=newJTree(turmas)
DefaultMutableTreeNodeturma1=newDefaultMutableTreeNode("Turma1")
DefaultMutableTreeNodealuno1=newDefaultMutableTreeNode("Aluno1")
DefaultMutableTreeNodealuno2=newDefaultMutableTreeNode("Aluno2")
DefaultMutableTreeNodeturma2=newDefaultMutableTreeNode("Turma2")
DefaultMutableTreeNodealuna1=newDefaultMutableTreeNode("Aluna1")
turmas.add(turma1)
turma1.add(aluno1)
turma1.add(aluno2)
turmas.add(turma2)
turma2.add(aluna1)
tree.addTreeSelectionListener(newTreeHandler())
getContentPane().add(tree)
setSize(300,300)
show()
}
classTreeHandlerimplementsTreeSelectionListener{
publicvoidvalueChanged(TreeSelectionEvente){
DefaultMutableTreeNodenode=(DefaultMutableTreeNode)tree
.getLastSelectedPathComponent()
System.out.println("Elementoselecionado"+node.toString())
}
}
publicstaticvoidmain(String[]args){
TesteJTreetp=newTesteJTree()
}
}

Você também pode gostar