Dominando Eclipse - Edson Gonçalves

Você também pode gostar

Você está na página 1de 316
Oo eclipse pXoM Ola toltol Melo Nol Cao ih ome lo) PIT Taos MIL Coles oa CIENCIA MODERNA PREFACIO (O desenvolvimento da linguagem Java vem sendo cada vez mais presente nos dias Te nreenet io he Coons Ot stk POEESE Wet WoT CFI Cartruto 1-0 que e Java? 13 ara visualizar toda a licenga, use as setas para cima e para baixo do seu teclado. As teclas Page Up e Page Down também podem ser usadas, Ao final vocé verd a pergunta de que accita os termos de licenga “Do you agree to the above licence terms? [yes or no]”. Digite y(Figura 1.14): f rater Car rates of any ortesiction sit aly se mpm eee eae Th apes ater uring iciada, Ao seu término, mova o ditet6rio criado para a raiz ou para um outro diret6rio se desejar (Figura 1.15): shell# my jdk1.5.0_05 / ety Figura 1.15 ‘Apis a instalagio alta apenas configuraras varidveis de ambiente. Faga logout do root (comando exit) ¢ sete as varifveis para o usuério (Figura 1.16): shellf JAVA_HOMEs=/jak1.5.0_05 shelitexportJAVA_HOME, shell PATH=SPATH:SJAVA_HOME/bin shell# export PATH shell# CLASSPATH=SJAVA_HOMEZIib shell#export CLASSPATH shell#MMANPATH-SMANPATH:STAVA_HOME/man shell# export MANPATH. $6 para que voc# entenda 0 que significa cada variéve!: © JAVA_HOME.- Diretério onde a JDK esta instalada © PATH - Diretério dos executiveis, onde inclui o do Java © CLASSPATH - Diret6rio das libs © MANPATH- Diret6riodo manual, acessfvel porman javac, Cartruto 1-0 que Java? 15 Eee bgear 3 Figura 1.16 Para testar seo Java esté corretamente funcionando, digite no terminal o comando Javac (Figura 1.17): Spackty store 40 td vr Cane tite ‘Sreify store ts tna oer ace tee ‘Seciry rare te find igen nore fies 6 Dommsanno 0 Ecurse Para que vocé nio tenha que digitar essas varidveis todas as vezes que estiver no Linux, v4 até o arquivo .bashre, localizado dentro do diret6rio usuario em que voce cesté logado. Como o meu se chama Edson, entdo ficard da seguinte forma: pico /fhome/edson/-bashre No final do arquivo, di JAVA _HOME=/jdk1.5.0_05 exportJAVA_HOME exportPATH=SPATH:SJAVA_HOME/bin No teclado, dé Ctel + X para salvar 0 arquivo. Ue thiesse'it's stresoy sutted un fccroash base ond /te/provives Assim, toda. ver,que voc® efetuar login na sua méquina, esse arquivo écarregado, configurando assim essas varidveis, Capfru.o 2 Instalando o Eclipse Agoraque 0 J2SDK esté pronto para serusadoem suamsquina, voc€iragorabaixar « instalar 0 Eclipse para iniciar o trabalho com a linguagem Java. No momento da edigio deste livro, a versio era 3.1, mas como se trata de um desenvolvimento open source, essas versbes so rapidamente alteradas. ‘Voce pode baixara IDE Eclipse no endereco http://www.eclipse.org/downloads. Embora o Eclipse seja escrito em Java, voc€ deve baixar a versio especifica para ‘sistema operacional, devido ao uso da SWT. © SWT faz.uso de recursos especificos de cada sistema operacional, mais adiante eu explicarei isso. Basicamente, existem quatro tipos de versdes, listadas a seg Release —Umacompilagioestivel do sistema Eclipse foi liberada pela equipe principal de desenvolvimento do Eclipse. Isso indica que essa versio foi testada completamente, Nomomento em que escrevo esse livro, amais recente liberagao € a 3.1, no qual voce estaré aprendendo ao longo deste livro. ‘+ Stable build - Uma compilagio, que conduz até uma liberagio pela equipe de desenvolvimento, foi testada e pode ser relativamente estdvel. Novas carac- terfsticas normalmente aparecem primeio nessas compilagdes intermedi as, Estas compilagdes so equivalentes a versbes betas de produtos de softwares comerciais. 18 Dowinaxoo 0 Ecurst ‘© Integration build - Uma compilagio no qual os componentes individuais do Eclipse slo testados para serem estiveis pelos desenvolvedores do Eclipse. Nao hhé nenhuma garantia que os componentes trabalhario corretamente. Se cles, trabalharembem a0 conjuntocompleto, uma compilagiodeintegraca0 (Integration build) pode ser promovida a estado de compilagao estavel (Stable build). © Nightly build - A mais recente versio do cédigo de fonte. Como voeé pode prever, nao hé absolutamente nenhuma garantia desta compilagio, e se voc ‘utilizar pode ter sérios problemas. v Nota: As versies descritas este Tivro dos respectivos programas se encontram no CD anexo ao livro.O arquivo utilicado para é 0 eclipse-SDK-3.1-win32.2ip (para Windows) ¢ 0 arguivo eclipse-SDK-3.1- Linux), a versdo Release até 0 momento em que o livro & escrito Descompacte no local que vocé dese ux-gtk.targe (para No Winpows Para melhor compreensio do livro, descompacte © arquivo em um diretério temporario, geralmente o Temp no Windows e arraste o diret6rio eclipse para o drive CA, como mostrado na imagem a seguir (Figura 2.1: Carrruto2—Instatanoo o Ecurse 9 Assim como é para instalar, para desinstalar basta remover o diret6rio eclipse. Para iar 0 programa, dé um duplo clique no arquivo nomeado de eclipse.exe, ‘como mostrado na Figura 2.1 ‘Voce vers que funcionou corretamente quando aparecera tela de splash do Eclipse, semelhante A mostrada na imagem a seguir. Figura 2.2 v Nora: Como a instalagie, em Windows, ndo foi feita da forma mais comum, ou sei, com asistente, vocé notard que faliam atalhos. Fasa wm atalho na area de trabalho para ter um aceso mais ripide ao programa No Linux Da mesma forma que havia sido feito com a versio Windows, baixe 0 arquivo ¢ descompacte em um diret6rio temporirio, geralmente o /imp no Linux e mova 0 diret6rio eclipse para o diret6rio que desejar. No meu caso eu movi para Ahome/edson (nome do usurio em que eu estou logado no Linux) (Figura 2.3). me | Dosuma Bove Para descompactar no Linux, execute a sequnci shell# tar -xpvzf /tmp/eclipse-SDK-3.1-linux-gtk.tar.gz v Nora: arquivo em Linsce demonstrado nese exemplo extd no formato tarball. Esse tipo de arquivo foi usado porque voct pode estar usando uma distribuigdo Linux qualquer. Existem outras opgées na hora de fazer 0 download. ee SATE En QQ0G 00 4 3 — aofiaos pEYBco mio a ova $efosee mas tac Yn Figura 2.3 Para iniciar o programa, vi até odiret6rio eclipse no Terminale inicie o executvel ‘chamado de eclipse, como mostrado na Figura 2.3. Novamente, como no meu caso 0 usudrio se chama edson, eu entraria com o seguinte comando: shell#/home/edson/eclipse/ eclipse CapfruLo 3 Conhecendo o Eclipse (O Eclipse é uma IDE de desenvolvimento de programagio, inicialmente desenvol- vida pela IBM, que, segundo noticias, gastou mais de 40 mithdes de délares no seu desenvolvimento antes de transformar essa ferramenta em Open Source para um cons6rcio, chamado de Eclipse.org, que inicialmente incluiu a Borland, IBM, Merant, QNX Software Systems, Rational Software, Red Hat, SuSE, TogetherSofi,e Webgain. (utras companhias se uniram desde entio ¢ algumas também grandiosas como Hewlett Packard, Fujitsu, Oracle e Sybase. No entanto, a IBM continua encabegando ‘desenvolvimento do Eclipse por sua subsididria, Object Technologies International (OTH), com a equipe que iniciou seu desenvolvimento, ‘OTT € uma empresa que desenvolve ferramentas de desenvolvimento de objetos orientados, com uma histéria nos leva 1988, quando a escolha de linguagens de orientagdo a objetos era Smalltalk. OTI foi adquirida pela IBM em 1996, onde a 1BM adquiriuforga em seu ambiente de desenvolvimento de orientagio ao objetoschamado Visual Age Muitos conceitos utilizados pioneiramente em Smalltalk foram aplicados em Java, fazendo da ferramenta Visual Age for Java (VA4J) um ambiente sem igual Eclipse is essentially a rewrite of VA4Java in Java. Eclipse 6 essencialmente uma reescrita de VA4Java em Java. 22 | Doumanno o Bourse (O Eclipse em si fornece apenas o ambiente integrado para a execugo dos plug-ins © uns poucos plug-ins bésicas, como editor de textos ASCII, sistema de ajuda e integragdo ao CVS. Para devem ser instalados plug-ins adicionais. iciaro desenvolvimento, em qualquer linguagem que seja, Isso quer dizer que em si, o Eclipse nflo desenvolve apenas sistemas na linguagem Fava, mas sim em qualquer linguagem que vocé queira desde que esta tenhia um plug- in de desenvolvimento para ela, e se ndo houver, vocé mesmo poder desenvolver, se quiser. A ARQUITETURA DO ECLIPSE Além da pequena runtime, a plataforma do Eclipse consiste do Workbench, ‘workspace, help,eum time de componentes, Outros ply biisico necessério para a cringio de uma aplicagio usdivel ins seajustam ao framework A PLATAFORMA RUNTIME 0 trabalho primario do runtime € descobrir quais plug-ins estdo dispontveis no diret6rio de plug-ins do Eclipse. Cada plug-in tem um arquivo XML (manifesto), que listam as conexGes que o plug-in exige. Estas conexdes ineluem extensbes que apontam para outros plug-ins. Essa extensdo aponta para plug-ins que so requeridos. Por ter um nimero de plug-ins potencialmente grande, muitos nfo sfo carregados até que eles sejam requeridos de fato, minimizando assim tempo de inicializagio © recursos do sistema, O workspace © workspace & responsivel por administrar os recursos do usuério que sio “organizados em um ou mais projetos. Cada projeto corresponde a um subdiretério do Jdiret6rio de workspace do Eclipse. Cada projeto pode conter arquivos e diretérios; rnormalmente cada diretério corresponde a um subdiretério do ditet6rio do projeto, ‘mas um diret6rio também pode ser unido a um diret6rio em qualquer lugar no sistema. Quando voc@ iniciar pela primeira vez 0 Eclipse, vocé vé uma caixa de didlogo como a mostrada na Figura 3.1. Cartruto 3 Constecenpo o Bourse B ‘Voce pode mudar o seu espago de trabalho, clicando em “Browse”, ou aceitar 0 local proposto pelo programa ‘Se vocé desejarna ver mais essa caixade dislogonainicializagdodo Eclipse, basta marcar acaixade checagem “Use thisas the default and do not ask again”, antes de confirmar. Workspace Launche 7 Usetis asthe defo ond ort atk gan Figura 3.1 [io se preocupe, se depois voce quiser alterar isso, mesmo marcando a caixa de ‘checagem dessacaixade didlogo, véaté omenu File cemSwitch workspace voce pode alterar a érea de trabalho do seu Eclipse. ‘A seguir voct tem uma visio da mesma tela s6 que em Linux (Figura 3.2): eee ‘wprduatare tre yr ject nal cates mcapsce ‘Shecse a meaner tome ert enon ed eet arth dena deta as Figura 3.2 24 | Desmunoo 0 Basse O WorkBeNcH © Workbench € a interface grifica do usuario do Eclipse. Além de exibir 0s familiares menus e caixas de ferramentas, € organizados em perspectivas que contém visdeseeditores, Uma dascaracteristicas notdveisdo Workbench, diferente damaioria das aplicagdes Java, o look and feel € como uma aplicagao nativa. Isso ocorre porque cle foi construfdo usando Eclipse’ Standard Widget Toolkit (SWT)eJFace, um toolkit de interface de ususrio construfda em cima do SWT. Diferente dos padres grificos do Java, como AWT ¢ Swing, que emula o ambiente gréfico nativo, o SWT mapeia diretamente os grificos nativos do sistema operacional. ‘SWTéumdosaspectos mais controversos do Eclipse, porque SWT deveser portado para cada plataforma que suporta 0 Eclipse. Isso ndo chega a ser um problema, porque SWT ja foi portado as plataformas mais populares (incluindo Windows, Linux/Motif, Linux/GTK2, Solaris, QNX, AIX, HP-UX, eMac OSX). importante salientar que o Eclipse nfo 0 forgaa raat com seu Toolkit, a menos que voc queira fazer plug-ins, vocé pode continuar programando em AWT € Swing normalmente, quando se tratar de programar em Java, € claro seine |e 0-4 lage. [o4 [7B Ih 0-02 I = Bara States Figura 3.3 Carrruto 3~Coxscenno o Ecurse 25 Asbarrasde titulo, ferramentas, perspectivaestatustendem a ficarnomesmo local de uma perspectiva para outra. Enquanto vocé pode personalizar o aparecimento conteiido das barras, as barras estardo sempre disponiveis € nos mesmos locais. © Barra de Titulo: A barra de titulo sempre exibe o nome da perspectiva atual. © Barrade Menu: Estaéabarra de menu global do Eclipse, que lhe permite fazer todas as tarefas gerais. As op¢des disponiveisem cada menu também mudario dependendo do que estiver selecionado. ‘+ Barra de Ferramentas: Esta éa barra de ferramentas global do Eclipse que também the permite executar tarefas gerais ¢ tarefas especificas para itens selecionados. ‘+ Barra de Status: Esta linha exibe tipicamente informagio sobre o item selecionado, embora possa conter informagies adicionais que dependem da tarefa voct estéexecutando atualmente. Por exemplo, quando voce estiverem um editor de texto, a barra de status poder mostrar sua posigdo atual dentro do documento. ¢ Painel do Editor: exatamenteoque o seu nome dia: 6 uma ferramenta para editar documentos. Esses documentos podem ser qualquer coisa desde fontes de programas ou configurag6es de sistemas. ‘* Views: Views mostram grupos de objetos relacionados. ‘TEAM SUPPORT (© plug-in team support facilita 0 uso do controle da versio (ou configuragio administrativa) do sistema para administra os recursos no projeto do usuério e define ‘workflow necessrio para salvare recuperarum repositério.A Plataforma Eclipseinclut tumcliente paraum Sistemade Versdes Simultineos (Concurrent Versions System -CVS), HELP ‘Como a prépria Plataforma de Eclipse, © componente de ajuda é um sistema de ‘documentagio extensivel. Ferramentas podem adicionar documentagio em formato HTML e, usando XML, define-se uma estrutura de navegagio. Refletindo 0 modo ‘como plug-ins se conectam com outros plug-ins, ferramentas de documentagio podem inserirt6picos em uma drvore de topico preexistente 26 | Dowruoo 0 Bourse MULTIPLATAFORMA, LINGUAGENS DE PROGRAMAGAO E IDIOMA Emboraa Plataforma Eclipse sejaescritana inguagem Javae seu uso mais popular € como sendo um IDE Java, o Eclipse & neutro em linguagem de desenvolvimento. O que o torna mais atrafdo por desenvolvedores Javaé por parte devido aos seus intimeros plug-ins voltados para essa linguagem, mas com plug-ins adicionais, voc® pode Programar em outras linguagens como C/C++, Cobol e até mesmo C #. Eclipse também & neutro com respeito ao idioma. Da mesma forma que vocé pode dara plataforma acapacidade de programarem outra linguagem de programagao,com plug-ins voeé também pode alteraro idioma nativo.A IBM doou um pacote de! que suporta o chines (tradicional e simpli coteano, portugues (brasileiro) ¢ espanhol. mas cado), frances, alemo, italiano, japonés, ‘Vocé pode baixar 6 pacote de idiomas do Eclipse no mesmo site da plataforma, Carfru.o 4 Criando seu primeiro projeto Depois de voc’ ter tido um primeiro contato com 0 Eclipse, agora esté mais que na hora de iniciar um projeto, No menu File, vé até New e clique em Project (Figura 4.1). Figura 4.1 8 Domsaxno o Ecurse Selecione a opgiio Java Project e clique no botio Next Figura 4.2 Digite em Project name: MeuPrimeiroProjeto (Figura 4.3) ¢ clique em Finish. Figura 4.3 CCarrruto 4 Criasoo sev PRNRo PROJETO 2» CRIANDO UM PACOTE ‘Como voe# pode ver, criar um projeto em Eclipse no é complicado. Agora, vocé aprenderé a criar um pacote. Clique em File, New e clique em Package (Figura4.4). Em Name digite onome do pacote Figura 4.4 ¥ Mas 0 Que € rAcoTE? Visando ensinar ndo somente desenvolvedores experientes em Java, ese pequeno quadro std destinado a explicar 0 que € pacote em Jawa para os iniciantes ¢ relembrar os mais “velhinhos" na linguagem. Os pacotes séo estruturas de diretérios utilizadas para organizar classes interfaces. Os pacores fornecem um mecanismo para reutiliagdo de software. Um beneficio dos pacotes & que eles fornecem uma convencéo para nomes de classes tinicas, Iso possbilita a reutilizarho de software. Para que as pessoas fornesam nomes de pacotes rinicos, evitando assim conflitos de nomes, a Sun Microsystems especifica uma convengdo para 50 ||) Deine 6 Beet nomes de pacotes. Cada nome de pacote deve iniciar com seu nome de dominio Internet na ordem inversa. Como 0 nome do dominio que eu tenho na Internet é integeator.com.be: eu inicio na ordem inversa 0 pacote com br.com.integrator. Depois de invertide seu dominio, voce pode escother ‘qualquer outro nome para seu pacote. Como o pacote pertence ao capitulo 4 do livro, 0 final fica com 0 nome cap0s. Assim sendo, 0 nome completo do pacote utilizado foi: br.com.integrator.capO, CCRIANDO SEU PRIMEIRO ARQUIVO JAVA ‘Volte ao menu File ¢ em New clique em Class Em Namedigite OlaMundo. Marque opeao, se nao estiver marcada, publiestatic void main(String{] args) ecliqueem Finish. Cartrui04—Crasnoseurnvemorsoero | 31 Nesse momento voe# terno painel editor o arquivo OlaMundo,javaabertoe jécom alguns eédigos em Java jé escritos, |rs-We RMS -0-4-\aaO-|O¥ [FB |fi-t > alte (Hretare Fon] =) 58 me) {wes seen” Para que voc tenha esse arquivo funcionando com algum contetido, adicione 0 ‘c6digo a seguir em destaque, no local indicado (Figura 4.7): 1 public starte void main(Stringl args) ( a TODO Auto-generated method stub 3 ‘System.out.printIn(“OléMundo!”); 4) 2 Downeanoo 0 Ecurse Dcage Bescon RE ANT wate ease cinta ( + te oe " = gsc statte void saacserseat a8) ( ‘Sheen-ooptati("o Rass)2 Figura 4.7 Note que no topo do painel, onde se encontra no nome do arquivo, aparece um asterisco (*) antes. Isso indica que esse arquivo foi alterado. Para salvar as alteragies, ‘voc8 tem diversas formas, umadelas €clicarcom obotio direitodomouse sobre otexto do editor e selecionar no menu de contexto a opgio Save. Cormo4-CrnivosvmmenorieeT> | 33 (Outra forma seria usando o menu File opco Save ou utilizar 0 atalho Ctrl +S. Para compilare executar o arquivo Java, vocs irdatéo Runena ope Run Asclique em Java A pplication, Note que na View inferior ao editor, apareceré um painel chamado Console (Figura 4.10). (rates ai: [omen = elt let Figura 4.10 Esse resultado seria o da execugio do arquivo Java em um terminal aps sua compilagio ¢ execusio. CapiruLo 5 Aprendendo um pouco sobre Java Se voc® é iniciante na linguagem ¢ escolheu esse livro como seu ponto de partida rnesse mundo fascinante, seja bem vindo, Esse capitulo estard dedicado total e exclusivamente aos conceitos de Java, bem como também na sua utilizagdo com o Eclipse. ‘Agora, se caso vocé seja um desenvolvedor experiente, mesmo tendo bastante conhecimento, no ignore esse capftulo. Os exemplos contidos serio de suma impor- {ncia para 6 seu bom desempenho em Java utilizando a plataforma Eclipse. O pRINCIPIO BASICO DE JAVA Os aplicativos Java automaticamente comegam executando em main, Os parénte- ses depois de main indicam que ele € um bloco de construgo do programa, chamado de método, (Ométodo main éoexecutor Java, e sempre queo seu c6digo tiver queserexecutado ‘como um programa, ele deve constar no cédigo-fonte. Apalavra void indica que esse método executardatarefaaele definido. Os métodos sto capazes de realizar uma tarefa ou retornar informagdes quando completam suas tarefas 36 Dominaxoo © Ecurse ‘A chave esquerda "{", indica o inicio de um bloco,o corpo da definigo do método. [Uma chave direita ")'deve ser entio colocada para finalizar © bloco. System.out.printin('"OléMundo! Instrui a miquina virtual Java que seu programa quer exibir os caracteres que estio entre aspas. Na verdade, esto entre aspas porque sio strings, toda string fica entre aspas Note também que na finalizago de uma linha, voc deve colocar um ponto-e- virgula (;). A linha inteira, incluindo o ponto-e-virgula, é chamada de instrugio. VARIAVEIS E OPERADORES AAs varidveis devem ser sempre declaradas, isso porque cada uma pode conter um tipo de dados, primitivos ou objetos. Otipode dados ¢ importante para que o compilador saiba quantos bytes de memria ‘devem ser reservados & varidvel (0s tipos de dados podem ser primitivos, como os encontrados na maioria das linguagens existentes. Tiros DE DADOS INTEIROS Existem quatro diferentes tipos de dados inteirose podem armazenar valores dentro dos seguintes intervalos numéricos: Tabela de Tipo de Dados Inteiros Tipo Armazenamento_Extensio im bytes 2,147 483,648 & 2,147,483, 647 shot’ 2bytes -32,768 232,767 long 8 bytes -9,223,372,036,854,775,80829,223,372,036,854,775,807 byte__Ibyte 128127 Cartruto $— Artexpespo us rouco some Java 37 Em Java os tipos inteiros silo sempre capazes de armazenar tanto valores positives como negativos. Tiros DE DADOS EM Ponto FLUTUANTE Existem dois tipos de representagdes para valores numéricos em ponto flutuante ‘que se diferenciam pela preciso oferecida. ‘Tabela de Tipo de Dados em Ponto Flutuante Tipo Armazenamento _Extensio float 4 bytes Aproximadamente £3.40282347E+38F (6-7 digitos decimais significativos) double 8 bytes, ‘Aproximadamente + 1,79769313486231570E+308 (15 digi- tosdecimais significativos) Onome double refere-se ao fato de ter os nimeros duas vezes mais preciso que o tipo loa. Tipo DE DADOS DE CARACTERE O tipo de dados char denota caracteres segundo 0 padrio Unicode de representa ‘20. Enquanto uma String ¢representado por valores entre aspas - "valor"; tipo char é representado por valores entre aspas simples - valor. ‘Como o padraio Unicode foi projetado para lidar com todos 0s tipos de earacteres «em todos 0s idiomas, ele tem um cédigo de bytes, ocupando 16 bits, sem sinal, oque Ihe permite representar até 32.768 caracteres diferentes. ‘Alguns caracteres so considerados especiais, pois nfo possuem uma representa- io visual, sendo que em sua maioria sio caracteres de controle e outros so de uso reservado pela linguagem. Esses caracteres podem ser especificados dentro dos programas como indicado na tabela a seguir, precedidos pela barra invertida V': 38 Donmsaxoo 0 Ecurse ‘Tabela de Tipo de dados de Caractere Caractere Nome Signitie wb Backspace Retrocesso w Tab Tabulagio wn Linefeed ou NewLine Nova linha v Carriage return Retorno de carro v Double quote Aspas v Single quote Apostrofo, wv Backslash Barra invertida Tipo DE DADos Locico Em Java tipo I6gico é 0 boolean, capaz de assumir valores como false (falso) ou true (verdadeiro). DECLARAGAO DE VARIAVEIS Uma varidvel € um nome dado pelo programador & uma informagio no qual se deseja armazenar alguma informagio, Essa informagio pode ser definida pelo seu tipo Primitivo, ou seja, caractere ou niio, ou pode ser um objeto. ‘Uma variavel em Java pode ser um caractere ou uma sequéncia de caracteres, que devem seralfabéticos e numéricos, obrigatoriamente iniciado com um valor literal ou por um caractere '_' de sublinhado (underscore) ou'S'(ciftio). Como Java faz diferenga entre letras maidsculas ¢ mindsculas, varidveis como Teste ¢ teste sto consideradas diferentes, Precedendoa variavel,emsuadeclaragio, vocé deve colocar seu tipo. Porexemplo: int teste; double total; (Cartruto 5 Araexpenno un r0uco some Jave 39 Alm dessas regras bésicas, voc8 também deve tomar cuidado com as palavras que so reservadas pela linguagem, que obviamente, sio de uso da linguagem ou se encontrar reservadas para uma futura incluso na linguagem Java, Portanto,evite declarar varidveiscomo:for, new, class, do, final, operador, rest, var. ‘Também ¢ possivel declarar varidveis de mesmo tipo separados por virgula: double total, valor1, valor2; CoMENTARIOS Como toda linguagem de programagio, vocé pode fazer comentérios em seu cédigo-fonte tornando assim uma forma de documentar os e6digos deixados, que poderd ser uilizado por outra pessoa, pela equipe de desenvolvimento ou até mesmo Por voc, afinal, se voe® levar muito tempo para rever um c6digo desenvolvide, pode ser que vocé nem se lembre de como foi desenvolvido, 0 Java aceita ués tipos de comentérios: de linha, representado por duas barras (/ ‘),ode miltiplas linhas, representado por barra asterisco.e finalizado por asteriscobarra (U* *),@ um terceiro que se assemelha a0 comentério de mélkiplas linhas, que tem 0 prop6sito de documentar o programa: 1 Comentério de documentagaio * que pode ser feito em muitas linhas ” © comentério de documenta é posicionado imediatamente antes do elemento a ser documentado e tem seu contesdo extraido automaticamente pelo utiitério javadoc fornecido juntamente com oJDK. Para criar um comentério no projeto, v4 a0 menu Project e clique em Properties. Nacaixade didlogo, véatéacategoria Java Code Style. Em Configuregenerated ‘codeand comments, no item Comments sclecione Types. Clique nobotio Edit, Nacaixa de didlogo Edit Template digite o comentério a seguir: 40 | Dowmanoo 0 Ecurse we * eauthor Ecison Goncalves * para alterar esse comentario v4 em: * Project ~ Properties - Java Code Style - * code Templates - Comments - Types Figura 5.1 ‘Agora, no item Code selecione New Javatfiles. CCartruto 5—ArnespeNoo une rouco Sonne Java 41 Clique no bot Edit. Na caixa de didlogo Edit Template, digite 0 texto a seguir: I * Criado em $(date} + Bese comentario 26 & vAlide para o projeto + € um exemplo de comentarios gerado por template. Para alterar va * Project - Properties - Java Code Style ~ Code Tenplates - Code - New Java files v7 ${package_declaration) ${(typecoment } $(type_declaraticn} Clique no botio Insert Variable para inserir as varidveis que desejar. Note as variaveis existentes, como mostrada na imagem a seguir (Figura 5.3) 2 Downeaxpo o Ecurse Ao iniciar a criago de uma nova classe, marque a opso Generate comments. Which method stubs ou youth to eats? I pub tat ad mahi Ser aos) F constructs fom siperdass trherted abstract methods Do you mat to add commer as corigwod nthe popatisofthe rent ret? Seam, Figura 5.4 ‘Veja como ficou 0 seu cédigo com a geragto dos comentirios adicionados na Figura 5.5 a seguir: Cartruro5Arespevoo um rovensoaarjava | 43 “hoses io cre tages Figura 5.5 OPERADORES A linguagem Java oferece um conjunto muito amplo relacionado a operadores destinados a realizar operagies aritméticas, l6gicas, relacionais ou de atribuigao. Tabela de operadores aritméticos Operadores ‘Significad Exemplo digo ou sinal positive a+bousa Subtragio ou sinal negativo a-bou-a ‘Multiplicagio atb Divisio a/b Resto da division am Incrementovitirio +a ou ate Decrementounitério “ Dommanoo o Ecurse ‘Tabela de operadores relacionals Operadores Significado Exemple = Igual aseb Diferente alsb > Maior que ab < Menor que >= ‘Maiorou iguala Menor ou igual a ‘Tabela de operadores Isgicos Operadores Significado Exemplo ae E6gico (and) a&&b u ‘OU Légico (or) alt ! No (n00) a 0 operador de atribuigdo em Java € 0 sinal de =". EsTRUTURAS DE CONTROLE Em algumas circunstincias, quase que insimeras vezes, voc8 precisa naturalmente cexecutar instrugGes de um programa baseado em condigGes, no qual podem ser baseados para acessar informagSes somente se a condigio for satisfeita ou até mesmo repetir uma ddeterminada quantidade de vezes a mesma instrugio até satisfazer uma condigo. A linguagem Java possui diversas estruturas de controle destinadas ao controle do fluxo de execugto, As estruturas de controle de execugio estio divididas em: © Estruturas de desvio de fluxo ~if..elseif..else; switch * Estruturas de repetico condicional - for, while, do...while © Estruturas de controle de erros - try...catch...finally © Mecanismo de modularizago - métodos CCarfruto 5 Aruenpesoun roven sons Jaen 4s A ESTRUTURA IP...ELSE IF...ELSE A conhecida instrucio de desvio de fluxo de execucio, oif..elseif..else permite aselesio entre dois oumais caminhos distintos emumacxecusio, dependendo sempre do resultado avaliado na estrutura, que retoma verdadeiro ou falso em umaexpressiio Vogica, Crieum segundo projeto, chamado de ConhecendoJava. Crie uma nova classe no Eclipse e coloque onome de EstruturaDeControlelf. Mantenha selecionada a opto ‘Public static vold main (Stringt args). Digite 0 cédigo em destaque a seguir: EstruturaDeControtelt java public class EstruturaDeControleté ( Public static void main(Stringl] args) ( 4f( Integer.parsetnt ( args [0] ) > Intager.parsetnt ( args [1] ) )( System.out.printin("0 valor inicial ¢ maior que o valor final"); d ‘else i£( Integer.parseint( azgs(0] ) < Integer parseInt( args{1] ) )( Systen.out.printin("0 valor inicial menor que o valor final"); y etse( Syaten.out.printin("0 valor inicial @ igual ao valor final"): d Para rodar, no menu Run clique em Run... Em JavaA pplication, clique como botiodireito domousee selecioneaopytio New “no mena de contexto (Figura 5.6). 6 Dowinsnoo o Beurst Figura 56 Ao surgir EstruturaDeControlelf, v4atéaguia Arguments, edigite os aémeros 1 ce depois de um espago, 0 mimero 3, como mostrads na imagem a seguir (Figura 5.2), clique em seguida no botio Run © an sem | me | ct] son PR cree 414] ran wares serena otra Setry om dan tre ery Figura 5.7 (CartruioS ~Amevorsine uit rouco som JAVA 7 Observe o resultado na parte inferior. em Console. Volte novamente em Run € ccoloque outros argumentos para que voce possa testar as outras condigDes. A ESTRUTURA SWITCH A estrutura switeh aceita uma varidvel e a compara com uma lista de constantes, exccutando uma Tinka de eddigo (ou um bloco) guandoencontrar una corresponén- cia. mito empreyad na avalinglo de uma seqiécia de testes, como.ocore com a insiruga0 ets felse Prsm,essaesruura€limitada, poucousadaem um ego save Da mesma forma que no exemplo anterior, erie uma nova.classe, com o nome de EstruturaDeControleSwitch ¢ ailicione o cddigo mostrado a seguir em destague: public clase cot Public static void main (st: int valor; valor = Integer.parseInt ( args{0) ) > auitch( valor )( case 1 case 2: System.out.printin("0 valor 6 1 ou 2") :break; ease 3: System out printla ("0 valor é 3"); break: ‘case 4: System.out.printia("O valor é 4"); break; Gerault: System.out.printin("0 valor @ maior que 4"); ) Executando a mesma sequéncia do exemplo anterior, na caixa de ditlogo Run, ‘idiione na guia Arguments niimero 2¢em seguidaclique no hotdo Run, Execute fovamente com outros niimeros, 48 | Downawno o Eeurse A ESTRUTURA DE REPETIGAO FOR Asestruturas de repeticio condicionais, mais conhecidas como loops, so também muito tteis no desenvolvimento de sistemas, pois permitem que um determinado trecho do seu cédigo seja executado diversas vezes, baseados em uma condigio. © loop for é composto por trés segdes: inicio, onde vocé da ele um valor inicial paracomegaraexecueo, condi, onde feito um teste no qual ele verificara sempre ‘em uma nova repetigio, se foi ou ndo, satisfeta a condigio; ea atualizagio (ineremen- to/ decremento), onde o loop adicionaré ou removers um valor, enquanto a condigio no for satisfeita. Essas segdes so opcionais, ou seja, podem ou nao ser preenchidas. O que normalmente no acontece. EstruturaDeControleFor java public class EstruturaDeControleFor ( Public static void main(String argsf 1) { for (int contar = 0; contar < 10; contart+) { ‘System.out.printin("0 valor da variével contar 6: "tcontar) ; ) ‘Comoesse c6digo de exemplo ¢ bem simples, nio é necessério iraté o menu Run para rodé-lo. Na lateral esquerda, clique sobre o nome da classe com 0 botio di ‘do mouse, em Package Explorer, ena opca0 Run As clique em Java Application, ito O Loop WHILE ‘Acestrutura de repetigdo while ndo possui uma segao para inicializago e nem para atualizago, Esse loop apenas testa a expressio l6giea ¢ executa um comando ou bloco de instrugdes enquanto ela resultar num valor verdadeiro em sua condigio. A inicializagto ea atualizagio da varidvel que controla o loop devem ser feitas uma fora do loop e a outra dentro do bloco de instrugdes respectivamente. Crie uma nova classe e a chame de EstruturaDeControleWhile. CCantruto $~ArnenoeNDO UM POLCO SOBRE JAVA 0 EstruturaDeControleWhile.java public class Estruturabecontrolewnile { public static void main(String args{1) { Ant contador=0; while (contadorInteger.parsernt (args{0])) { Systen.out.printin valor) ; valor ~ , ) catch (ArrayIndexOutofBoundsException erro) { ‘System.cut.printin("Voc8 ndo forneceu um argumento") ; » catch (mberFormatException erro) ( System.out.printin("Vooé no forneceu um numero inteiro") » ) Quando executar, voc8 deverd passarargumentos. Execute com nenhum argumen- to ou uma letra para ver a excegio. (Carfruto5~Araexoenino uM rouco sosne Java st Figura 5.8 v Nota: Para wm iniviante, & muito bom visualizar problemas que ocorrem quando nao existe 0 tratamento de excecbes. Faca 0 teste nos cbdigos feitos anteriormente, onde hd a passagem de argumentos, deixando esses em branco para vocé ver 0 langamento de excegées exeeutadas pelo Java no sole. © formato finally ficaria assim: text //dixetiva normal ? ) finalty( //diretiva de erro ) IETODOS ‘Um método é uma fungo que representa um conjunto de ages que um programa deveexecutar,Criamosummétodo quando desejamos que essasagées sejam reutilizadas ‘em diversas partes do seu programa, Com isso evitamos a repetigfo de um mesmo ‘conjunto de procedimentos sem necessidade. Lic class Desenvetodos | void metodotim( ){ ‘System.out.printin( ) 90 6 um método sem argumento") ; 2 Dowmeanpo o Ecurst Ant metododois( ) { int valor4=10,valor2=13, Ant total = valori*valor2; return total; ) double metodefres(int argi, int arg2)( double total; total= (double) argi/ (double) arg2; return total; ) public static void main(Stringl ] args) ( DesenvMatodos desM = new Desenvitetodos( ): destt.metodoUa( ); System. out. printin (desM.metodoDois ( )) ; double totaladesM.metodoTres (10,5) : System.out.printin(""+total) ; ‘Os métodos sempre slo seguidos de seu tipo, int e double por exemplo, podem passar ou no argumentos, podem retornar ou nio valores. Oprimeiro: inicio do método a palavra void. todo, metodoUm, ndo retorna valor algum, porisso vocé encontrano, (Osegundométodo, metodoDois, retorna um valor, voc® encontra tipo dométodo em seu inicio e a palavra return no final do método. Otterceiro método, metodoTres, também retorna um valor, mas também aceita argumentos, ou seja, vocé pode definir novos valores todas as vezes em que chamar esse método. ‘Carfruto 5 Artexoexpo um rouco sen: JAVA 3 ¥ Onservacio: Tado método que nao for void deve ter 0 retorno de um valor, utlizando a palavra cewurn, Cada método sb pode retornar um valor. A PROGRAMAGAO ORIENTADA A OBJETOS © Java é uma linguagem orientada a objetos, ¢ como tal, voc® nto poderia deixar de ter aqui um pequeno resumo do que seria essa tal orientagio a objetos. Uma grande quantidade de pessoas que desenvolvem em outras linguagens de programacio estio muitas vezes familiarizadas com a orientago de objetos, mas devido a flexibilidade da linguagem, muitas vezes por puro capricho o programador desenvolve de forma procedural, como era feito antigamente. ‘A programagaio orientada a objetos, também conhecida como OOP, € uma maneira de construir programas de computador que espetham 0 modo como os objetos so ‘montados no mundo fisico. ‘Com esse estilo de desenvolvimento, voce poderd fazer programas mais lexiveis, reutilizdveis e inteligentes. OBJETOS E CLASSES A programagiio orientada a objetos & baseada no modo como, no mundo fisico, 0s objetos so constituidos de muitos objetos menores.. Por exemplo, vocé pode observar esse livro que, para t@-o na forma como voc8 © ‘¥, ele primeiro foi uma érvore, que se transformou em celulose, depois em um papel ‘eem uma gréfica, vocé tem 0 livro como 0 vé. E ai? Voce deve estar se perguntando, Bom, primeiramente uma drvore (objeto inicial), pode sertransformadaem diversascoisas, como madeira, paraconstruicasas, ‘em carvio, para um maravilhoso churrasco. 44 quando voc8 transforma em papel, esse pode ter varios tipos, desde para um livro até para um cademo, © importante de tudo isso € 0 conceito de que, voc@ inicia um desenvolvimento sendo uma raiz de tudo, essa € érvore. Depois voc# reutiliza esse arquivo drvore para transformé-lo em diversas coisas, como papel, carvio, lenha, Natransformagao desses 4 Dowuxaxoo 0 Ecurst diversos objetos, voc® pode utiliza-los para diversos fins, o objeto papel, por exemplo, vira livros, cadernos, envelopes ¢ etc. Um outro recurso importante na programagio orientada a objetos sio as classes. Classe é um modelo usado para criar um objeto. Todo objeto criado a partir da mesma classe tera recursos semelhantes, se niio idénticos.. Asclasses incorporam todos 0s recursos de um conjunto especifico de objetos. Em um programa orientado a objetos, voc® no cria objetos individuais. Vocé define, em ver disso, as classes usadas para criar esses objetos.. Uma classe inicial pode servir como um modelo abstrato. Para ter algo realmente concreto, para que possa ser manipulado, voce pode usar essa classe para eriar um objeto, A criagio de um objeto a partir de uma classe ¢ chamado de instanciagio e os objetos criados também so chamados de instdincias. REUTILIZANDO OBJETOS Com a linguagem Java, vocé tem diversos objetos que partem de uma classe com tum modelo abstrato, que instanciado, dio novas caracteristicas a0 objeto. ‘Ao escrever um projeto Java, vocé projeta ¢ constrsi um conjunto de classes. ‘Quando 6 programa ¢ executado, 0s objetos so instancindos a partir dessas classes € usados de acordo com a necessidade. Felizmente em Java nada 6 iniciado do zero. Voc® pode construir diversas classes tilizando um modelo j4 existente. Nesses modelos existentes, voc tem objetos sgrificos, som, objetos de desenvolvimento para a Web e até para aplicativos méveis como celulares ¢ computadores de mio, CarfruLo 6 Conhecendo a interface do Eclipse Quando a plataforma Eclipse foi desenvolvida, seu time de desenvolvedores ) display.dispose( ); Em JFace: Janela.setBlockonopan (true) : Janela.open(): Display. getCurrent () .dispose(); © primeiro método chamado, setBlockOnOpen, se verdadero, chama o préximo ‘método, open, para entrar em umeventoem loop, similarao conhecido eventoem loop usado no SWT. Embora JFace perea um pouco da elegiincia de seu cédigo no uso do terceirométodo.aserchamado, Display.getCurrent( ).isposet ) ainda sim, seucédigo é mais claro de ser usado. “ Downanno o Eeurst Muitos programadores Java se identificam mais com JFace, pois sua similaridade com Java é muito grande. ‘Se voc acha que ¢ 6, ndio se preocupe, mais adiante serio abordadas de forma mais, abrangente essas duas bibliotecas do Eclipse. CapfruLo 7 ‘Trabalhando com o Editor Visual do Eclipse Qualquer um que trabalhe hoje com desenvolvimento vem sempre com a mesma pergunta inicial: onde eu desenvolvo o programa de forma visual? Isso acontece porque muitas outras ferramentas fizeram uma cultura no desenvol- vimento de aplicativos visuais. Apesar de alguns entusiastas do desenvolvimento dizerem que a parte visual “suja ‘0 cddigo”, todos concordam com uma coisa: desenvolver aplicativos em programas deedigao visual € muito mais répido eno mundo como estamos vivendo, tempo é tudo. No fim de 2003, a equipe de desenvolvimento do eclipse.org liberou a primeira verso (0.5) do Eclipse Visual Editor (VE) que, inicialmente 6 havia suporte para design de AWT/Swing Nos dias de hoje, voe8 tem o Editor como em SWT. sual que tanto desenvolve em AWTISwing ‘Uma das caracteristicas principais do VE € que vocé tem a programagto de duas formas: uma que as mudangas no plano visual refletem imediatamente no c6digo Java gerado, ¢ outra que, mudangas no eédigo Java 6 refletido no plano visual, assim que 0 c6digo fonte tenha sido salvo. Pa INSTALANDO O VisuAL Eprror (VE) Para instalar 0 VE do Eclipse antes vocé tem que ter instalado o Eclipse Modeling, Framework (EMF). OEMF pode serbaixadonoendereco http:/www.eclipse.org/emt/ OVE pode ser baixado noenderego http://www eclipse.org/vep/. Depois de ter esses dois arquivos, instalar um novo plug-in no Eclipse é relativa- mente facil. O exemplo a seguir € baseado na versio do Eclipse utilizada na edigo desse livro, ou seja, 3.1 ‘Oarquivo EMF esti compactado, no formato zip, comonomede emf-sdo-runtime- 21.0. Descompacte esse arquivo. Vocé notaré dois diret6rios, um chamado plug-ins & outro features. 0s arquivos do diretério plug-ins devem ser colocados dentro do diret6rio plug- ins dentro do diret6rio raiz do Eclipse. O mesmo se faz.com o diretGrio features. importante que o leitor entenda que deve se movido todo o contesido de dentro desses diret6rios. ‘Omesmo deve ser feito como VE, que esté também compactado, no formato..zip, comonome de VE-SDK-1.1.0.1.zip, Apds ter feito isso, feche a plataforma Eclipse e inicie novamente. Para visualizar os plug-ins instalados, vé ao menu Help e clique em About Eclipse SDK. Clique no botdo Plug-in Details, Em Plug-in Name voc€ verd virios plug-ins e inclusive os que voc instaou. ‘Cartruto7 ~Trannisisxdocom oEprtoR VisuaooEcurse | 67 rere Figura 7.1 ¥ OBSERVACKO: Voce encontrard esses arguivos também no CD que vem anexo ao livro. CRIANDO SUA PRIMEIRA APLICAGAO NO Visual Eprror Gragas aoseueditor WYSIWYG (what you see is what you get),o Visual Editortem um modo facil de desenvolver uma interface. Parainiciar, rie umnovoprojetoem JavaProjectechame-ode ProjetoVVisualEditor. Adicione a biblioteca SWT também (no se esquega de marcar a opgo para incluir 0 JFace). Voc fard nesse capitulo aplicativosusando Swing comotambémoSWT/Face. Para criar sua primeira tela em Swing, vi ao menu File, em New clique em Other. Nacaixa de dislogo New sclecione na pasta Java a opgio Visual Class (Figura 7.2). Clique em Next logo apés. 6 Dowmanpo o Ecurse Figura 7.2 Na proxima tela, voc€ colocard no campo Name o nome da sua classe, MinhaPrimeiraTela Visual. Em Style, selecionenapasta Swing aopgio Application, (Figura7.3). Note queem Superclass vocé verd javax.swing. JFrame, Cliqueem Finish para terminar o assistente. Figura 7.9 (Carfruto7 ~Teanantanoo como Eorror Visuat 00 Ecurse o Voce terd uma tela com varios itens, onde o principal é a janela que é apresentada na imagem a seguir (Figura 7.4), Figura 7.4 ‘Como vocé pode dispor os painéis onde voe® desejar, arraste para a posigo que ‘mais Ihe for confortivel. Para uma melhor compreensio do letor, mostro na imagem a seguir (Figura 75) a disposigio das views que estou usando para editar esse livro, inclusive também, a forma como prefirotrabalhar. 7 Dowananno 0 Ecurse Ao escolher Application, voot teve, através do assistente do Visual Editor, uma pequena janela com alguns elementos pré-configurados logo de inicio. Para que a adaptaco ao VE seja répida, vocé ird comegando a mudar o titulo, Clique no titulo da janela, onde esté escrito Application. Na primeira vez sera apenas para selecionaro local. A segunda indicardao VE que vocé desejaeditaro titulo. Note que vocé ter uma pequena caixa de edigo com 0 titulo atual j& selecionado (Figura7.6). = ea e Figura 7.6 Digitenolocalo texto Minha Primeira Aplicagiono VE epressioneatecla Enter paraconfirmar. Uma outra forma de voc® poder alterar o titulo da sua aplicagao € indo até Properties e em tile alterando titulo da forma desejada e confirmando com a tecla Enter (Figura77). robles Sree: Onder Cee Figura 7.7 [Na view Java Beans voc® tem uma érvore de componentes, onde voeé pode acessar ‘Componentes que voc® tem no seu aplicativo de forma répida, podendo assim alterar suas propriedades. Escrevo isso porque voce ter situagGes em que haverd muitos componentes sobrepostos ¢a tiniea forma acess{vel, de maneira I6gicae répida, serd nessa érvore de componentes. (Carrruto 7 —Trasaustaxoo com o Eorror Visuat 00 Ecurse n Figura 7.8 Voce também tem uma paleta de componentes, onde no desenvolvimento do seu aplicativo visual, voc€ pode adicionar outros itens que niio sejam os ja existentes ‘vindos do seu assistente. n Donmaxoo 0 Beurse Existe também uma view separador, do tipo split, que mostra o c6digo gerado até ‘© momento, da aplicago que voe® ja vé no seu editor visual No local indicado vocé pode ‘maximizar ou minimizar, ou se preferir, arrastar parafazer um ajuste personalzado Figura 7.10 Para que vocé compreenda um pouco do desenvolvimento com 0 VE aqui, na Palette,cliqueemSwing Components. Clique no componente JButton, e com 0 cursor vé até o centro da janela. Note que surgirdo linhas guias que 0 auxiliardo indicando o local onde voc® estaré adicionando © novo componente (Figura 7.11), Figura 7.11 CCarfruto7—Tranatsiaxoo com 0 Eorror Visual D0 Ecurst 2 Assim que vocé clicar no local que desejar, apareceré uma caixa de didlogo, chamada Name, pedindo para que vocé dé um nome ao objeto recém inserido (Figura 7.12), Dé 0 nome de jbSair e confirme, ‘Ao confirmar vocé teré um componente ocupando toda a érea destinada a objetos porcausa do tipo de layout que estésendo usado (voce versisso no préximo capitulo) Clique mais uma vez no componente jbSair, com ele jf selecionado, para colocar 6 r6tulo do botdo (Figura 7.13). Digite a palavra Sair e confirme com a tecla Enter. (eae kel Figura 7.13 7% Dowmnando 0 Ecurse io se preocupe com a aparéncia dada neste exemplo, pois no préximo capitulo vvoo8 seri levado a conhecer os layouts do Java. Falta, antes de rodar 0 aplicativo, a 4 janela quando for clicado. jonar um evento ao bot para que ele feche ‘Como botio direito do mouse, ou 0 inverso do qual vocé usa, vé até o item Events no seu menu de contexto ¢ clique em actionPerformed. Assim que o fizer, note que foram geradas linhas de c6digos no seu aplicativo. Substitua 0 cédigo em destaque a seguir: private JButton getJbSair() | if (bsair == null) { jbSair = new JButton( ); jpsair.setrext ("Saiz"): ‘bSair-addActionListener ( ew java.awt.event ActionListener () { public void actionPerformed (java.aut .event .ActionEvent e) t ‘System. out.printin ("actionPerformed()") , ye , return jbSair; Pelo seguinte e6digo: System. exit (0) ¥ Dic’ Voce pode acionar vérios eventos, entre outros cédigos, no editor pressio- nando a tecla Corl + Barra de espago. Feitaessas alteragdes, salve usandoaseqUénciano teclado Ctrl4S, véaomenu Run em Runs Ascligueem Jaya Application ‘Como resultado voce terd uma janela como a mostrada na Figura 7.14, Clique no botdo criado Sair para fechar a aplicagSo. (Cartruvo7 ~TranatianDo com 0 EoiToR VisUAt bo ECLPse Te al) Figura 7.14 CarfruLo 8 _Oslayouts em Javasio muitoimportantes, poiseles determinam a aparéncianaqual programa vai ter. Osprogramadores de outras linguagens podem estarpensando porque alinguagem ~ Javasepreocupa tanto com gerenciadores de layout. Afinal,na maioriados programas, tum gerenciador de layout nem é uma grande coisa; primero, vocé usa um editor de Ailogos para arrastare colocar seus componentes na superficie do dislogo e depois ‘usam-seferramentas para alinhar, espagare ete Oproblema dessa metodologia é que o layout resultante precisa ser manualmente Tefeito caso 0 tamanho dos componentes mude. Se voc testar, nio importa o sistema onal, existem muitos programas que lidam muito mal com isso, onde se 0 io mudar até mesmo o tamanho de uma fonte no seu sistema operacional, um oto mal planejado pode ndo exibir seu texto, porque a fonte aumenta, mas otto nao. Neste capitulo voc8 conhecersios layouts mais usadosem aplicagdes Javae também layouts do SWT. 78 | - Deswo0 0 Bours TRABALHANDO COM LAYouTS Java (AWT/SWING) Um gerenciador de layout determina como os componentes serio organizados ao serem inseridos em um contéiner. gerenciador de layout padrio para paingis € a classe Flow! permite que 0s componentes fluam da esquerda para a direita na ordem em que sto inseridos em um contéiner. Quando ndo houver mais espago, uma nova linha de ‘componentes seri iniciada imediatamente abaixo da primeira e a ordem da esquerda para a direita continuard. out. Essa classe A linguagem Java inclui outros gerenciadores de layout, onde os principais slo: © GridLayout © BorderLayout = CardLayout © GridBagLayout Para comegar, inicie um novo projeto, chame-o de LayoutsEmJava. Ao clicarem Next, vdatéa guia Librariese no botdo Add Library adicione abiblioteca SWT também (nilo se esquega de marcar a opsao para incluir o JFace). Crie também um pacote, que ‘no caso do livro foi criado com o nome de br.com.integrator.capO8. LayouT DE FLUXO Selecione agora o menu File, opgiio New e selecione Other. Na caixa de didlogo New selecione a opgio Visual Class. Digiteem Name, nonomedaclasse TrabFlowLayout. Selecioneem Style aopeio Frame. Mantenha checadas as opgdes public static void main(String{] args), Constructors from superclass Inherited abstract methods, Clique nobotio Finish. (© Visual Editor do Eclipse cria inicialmente um layout diferente do padrio Java, Ele inicia como gerenciador BorderLayout, \Véaté 0 painel Java Beans sclecione o componente jContentPane (Figura 8.1) (Cartryto 8 Tranatstasoo.com tavours ” Figura 8.1 Para oaplicativo de exemplo, neste primeiro Frame, voc® mudard esse layout para FlowLayout indono paine! Properties emlayout ‘Sala Fat Figura 8.2 Para demonstrar esse layout, selecione no painel Java Beans: this “JFrame” altere 0 tamanho de sua janela para 350 de largura por 100 de altura no paine! Properties. Aproveite ealtere tambémo titulo para Trabalhando com FlowLayout. Adicione 7 JButton’s, ecoloque em cada botio um nome na seqiéncia, jButtont ‘até Button. Digite um r6tulo para cada botdo. A aparéncia final serd como mostrada ‘naimagem (Figura 8.3), 20 Dowmanno o Ecurse Figurs Para que voc execute 0 programa, va até 0 painel Outline, e selecione main(String{). Figuré Adicione o cédigo em destaque a seguir: public static void main(string{] args) { ‘TrabFlowLayout tf] = new TeabFlowLayout ( ); #1, gotviesble (tre) | Carfruro 8 Trasaisianpo com tavours 8 Digite seu cédigo no local indicado Figura 8.5 Rode o programa e veja que a ordem colocada de cada botio é a ordem mostrada nest tipo de layout. Arrastando para aumentar ou diminuir a dimensio da janela, voc ‘notard que os bottes mudam de linha autom Aisponiveis. smente deacordo com aalturaelargura Como deve ser visivel, os botdes adicionados tem um alinhamento, comm em. “FlowLayout, no qual pode ser Center, Left e Right. foltando a0 VE, no painel Java Beans, vocé pode alterar 0 alinhamento dos tes clicando no sinal de “+” do lado direito da propriedade layout. 82 | Dommunoo o Bourse Véaté a property ¢ altere em alignment (Figura 8.7) Problems Jove Ondoain Coude EERE TSO Clique aqui [val Altere aqui [a plead fotaat > agar fa >feldnane Dear eet » Figura 8.7 Vocé também pode alterara distincia horizontal entre os componentes ea vertical emhorizontal gap e vertical gap respectivamente, em pixels. Figura 6.8 Layout DE Borba Olayoutpadrioparao VE¢0 Border ayout, que siocriadosusandoaclasse de mesmo nome, € que se divide em um contéiner de cinco segdes: norte, sul, leste, este e centro. No layout BorderLayout, os componentes dos quatro pontos cardeais ocupario 0 espago méximo necessério; 0 centro ocupard 0 espaco restante. Isso explica 0 ‘comportamento do botio no primeiro exemplo desse livro, Seguindo o mesmo padro do primeiro layout, vannomenu File, New e clique Other. Na caixa de didlogo New selecione a opcio Visual Class. Nonomedaclasse digite TrabBorderLayout. Em Style, sclecione aopgao Frame, Mantenha checadas as opges public static void main(String{] args), Constructors from superclass Inherited abstract methods. Clique no botio Finish CCarrruto 8 ~TaasaLnanvo com tAvours 8 5 JButton’s, organizando-os em cada um dos pontos cardeais existen- para finalizar. Seu layout ser4 semelhante 20 mostrado na imagem eed North Figura 8.9 esquega de que, para rodar o programa, vocé deve adicionar 0 eédigo em logo a seguir: ic static void main(String{] args) { ‘eabBorderLayout tbl = new TrabBorderLayout( ); Wl. setvisible(trve) ; DE GRADE GridLayout organiza os componentes em uma grade de linhas & Os componentes so incluidos primeiro na inha superior da grade, comegan- eélula mais & esquerda e continuando para a direita na grade. Quando todas da linha superior estiverem preenchidas, 0 préximo componente seré na linha seguinte, iniciando novamente como na primeira linha e assim por sumnovo Java Visual Classe dé no nome daclasse TrabGridLayout. EmStyle, /aopgiio Frame. Mantenhachecadas as opgdes publiestatic void main(String{] rructors from superclass e Inherited abstract methods. Clique no botdo 4 | Downavoo 0 Bours Selecione jContentPane em Java Beans, ¢ altere a propriedade layout para GridLayout Expandindo depois a propriedade layout, no sinal de “+”, altere as propriedades ‘mostradas na Tabela 8.1 ‘Tabela 8.1 ‘Columns 2 Heap 3 Rows 3 exw 5 Adicione logo apds 6 JButton’s, A sua tela terd uma aparéncia como mostrado na imagem (Figura 8.10) £ Trabalhando co Figura 8.10 MISTURANDO GERENCIADORES DE LAYOUT Até agora, voc® viu gerenciadores de layouts separados, mas deve estar se perguntando como esses layouts poderfo fazer em Java uma interface grifica agradével. Para se ter olayout perfeito, geralmente voce terd que combinar layouts, assim serd possivel tirar o maximo proveito que cada layout pode Ihe oferecer separadamente, (Carrruro8Teanatiiaspo.com tavours 85 Isso € feito inserindo contéiners em um contéiner principal, como um quadro ou uma janela, € fornecendo a cada um desses contdiners menores seus. préprios gerenciadores de layout. ‘Ocontéiner que deve ser usado nesses contéineres menores 60 paine!, que €criado apartirda classe JPanel. © JPanel, assim como outros paingis podem ser encontrados na paleta Swing Containers, no seu VE. Layour DE CARTA O layout CardLayout se difere dos outros layouts porque ocultam alguns compo- nentes, Eles sdo grupos de contéineres ou componentes que sao exibidos um por vez, da mesma maneira que vocé costuma ver em programas de instalago, onde si0 Imostradas telas de assistente para serem avangadas uma por uma, Crieum novo Java Visual Class e digite no nome daclasse TrabCardLayout Em Style, selecione a opgio Frame. Mantenha checadas as opgSes publie static void ‘main(String(] args), Constructors from superclass e Inherited abstract methods Clique no botdo Finish. Naérvore de componentes, em Java Beanse sclecione ocomponente jContentPane, ‘emodifique seu layout para GridLayout. Expandaapropriedade layout e altere em columns para 2(colunas)e em rows para 1 (linha), como mostra a imagem (Figura 8.11) a seguir: 86 | Dounwooo Baus Clique na paleta de componentes Swing Containers e selecione o componente JPanel (Figura 8.12). Figura 8.12 Adicione 2 JPanel’s no seu projeto através do uso da érvore de componentes em. Java Beans (Figura 8.13), clicando sobre o painel de contesido inicial do aplicativo (jContentPane). 5 ‘Ao selecionar 0 componente = Le RertetPanes JPanel, em Swing Containers, clique no local indicado ‘um layout null. O segundo layout, chamado de JPanelt, sera CardLayout | | | (© primeiro painel, chamado de JPanel, terd Figura 8.13 (Cartruto 8 Traaatsiaspo com Layouts 7 ro painel, chamado de jPanel, adicione 2 /Button's, clicando sobre 0 painel em esquerdo do seu design. importante que vocé clique exatamente onde foi dito, veja detalhe na imagem Figura 8.14). Figura Selecionando Button (o primeiro botio),altere apropriedade text (0 rétulo) para Amarelo e depois altere a propriedade text de jButtonl para Vermelho. No jPanel1, adicione mais dois JPanel’s, onde vocé teré jPanel2 ¢ jPanel3 respectivamente (Figura 8.15). Figura 8.15 88 Domiaxno o Bcurse Selecione jPanel2 na arvore de componentes e altere a cor de fundo nas proprie- dades em background para Yellow. Fagaomesmocom jPanel3 ealtere o background para Red, Clique aqui para selecionar a cor desejada Figura 8.16 Para terminar o exemplo, falta colocar a ago nos botdes para que sejam mudados 1s painéis ao clicd-los. Dé um clique com o botio direito do mouse (inverso do usado por voc8) no botio jButton enoitem Eventsnomenu de contexto clique emactionPerformed (Figura8.17) Figura 8.17 Cartrui0 8—Tranatnanno contavours 9 No cédigo, adicione a seguinte linha: cardtayoutt show (3Panel1,"jPanel2") ; Faca 0 mesmo com o botio jButtonl, ¢ adicione a seguinte linha: cardLayout1. show (3Panel1,"jPanel3") ‘Vocé notari que eardLayoutl nio esti declarado. Para corrigir isso, vé até o inicio jone 0 cédigo em destaque: public class TrabCardiayout extends JFrame ( private JPanel jcontentPane = null; private JPanel 3Panel = null; private JPanel jPanell = null; private JButton Button = null; private JButton jButton} = null; private JPanel Panel2 = null; private JPanel jPanel3 = null; private Cardiayout cardiayout! = null ‘No paine! Outline, clique no método getJPanelt, como mostra (Figura 8.18): ragem aseguir Jravees le XY 6 YT ES 90 Dowmeanpo o Ecurse Vi até o source e altere 0 c6digo em destaque: private JPanel getJPanel1() ( Af (jPanell == mull) { 3Panell = new JPanel( ); cardLayoutl = new Cardzayout ( ) Panel. setLayout (cardLayout); $Panel1 add (getPanel2( ), getJPanel2 () .getName )); 4JPanell.add (getuPanel3( ), getdPane13() .getName( }); } return jpanell; Para finalizar, v4 até main(String[]) em Outline e adicione o cédigo a seguir em destaque no source: public static void main(Stringl] args) { TrabCardiayout tel = new TrabCardLayout ( ) ; tel. setvisible(true) ; Rode o programa e clique no botto escrito Vermelho e veja a mudanga no layout lateral direito. O mesmo ocorre com 0 botdo escrito Amarelo. om Car Layout Figura 8.19 Para que vocé entenda o que aconteceu, uma breve explicacZo sobre 0 que foi ‘gerado em Java, CCarrruto 8 —TranaLuanoo com LATOUTS 1 A maneira mais comum de se utilizar o painel de carta, 6 utilizar um painel paracada carta. Por isso foi adicionado um JPanel, que seria 0 CardLayout e depois mais dois JPanel’s dentro dele. Se voct observarno source logono inicio das dectaragbes, voc8 verd as declarages dos paingis, por isso voc® declarou o CardLayout ali, para ter um acesso global na aplicagio, cardtayout cardLayoutl = null; Dentro dométodo get Panell, vocé encontra ométodo setLayout, noqual éusado para tornar jPanell o gerenciador de layout CardLayout. ‘Panel. setZayout ( new CardLayout ( )) 7 Comaalteragio, vocé pode utilizara declaragao global do gerenciador CardLayout, podendo assim utilizar os botdes para fazer as alterages dos painéis. Apés configurar um contéiner para usar o gerenciador de layout de carta, & necessério utilizar uma chamada do método add ligeiramente diferente para incluir cartas no layout. O métodoada(container, String) temcomo seu segundo argumento umastring que representa o nome da carta. Pode ser qualquer nome, como “Carta 1" “Carta 2”. primeiro argumento especifica o contéiner ou componente que € a carta, 3Panelt. add (getJPanel2(), getJPane12() .getNane ( )) ; Panel .add (getaPanel3(), getsPane13() .gatNane( )); ‘Apés ter adicionado uma carta a0 contéiner, vocé pode usar 0 método show de seu. CardLayout para apresentar uma carta, O método recebe dois argumentos: © Ocontéiner em que todas as cartas foram inseridas © Onome que foi dado a carta Essa foi & instrugdo adicionada no botio jButton: cardLayoutl. show (jPanel1,"jPanel2") ; 2 Dowmeanbo 0 Ecurse Note que ao clicar nele, o objeto cardLayout! mostra em jPanell o painel a ser exibido através do nome dado. LAYOUT DE GRADE DE CONTEUDO, O gerenciador GridBagLayout é uma extensio do gerenciador GridLayout. Esse layout se difere dos outros layouts onde: © Um componente pode ocupar mais de uma célula + As proporgdes niio so exatamente as mesmas, onde linhas e colunas niio precisam ser iguais. ‘© Oscomponentes dentro das células podem ser organizados de diversas formas, (0 VE do Eclipse acrescentou caracteristicas especiais as ferramentas de Design, 0 que torna 0 GridBagLayout muito mais fécil projetar e controlar. Em VE existem duas formas de se trabalhar criando um aplicativo usando GridBagLayout. A primeira forma é colocando item a item como projetado antes no seu painel GridBagLayout e organizando a posigdo selecionado, arrastando e dimensionando, ‘0 que toma essa forma muito mais demorada ¢ complexa (nao recomendo). A segunda forma é utilizando o layout null e quando adicionar seus componentes organizé-los como quiser, voc’ converte para GridBagLayout. CRIANDO A GRADE Em primeiro lugar, é preciso projetar o que voc® deseja fazer em sua tela no papel. Isso é importante, porque esbogar o projeto de sua interface antecipadamente tornar ‘muitas vezes mais répido 0 seu projeto do que voce imagina. Eu o desafio a fazer voce ‘mesmo seu layout, assim o exemplo se toma mais excitante. (Cartruto 8—Trasatsanno com tarours 93 ‘Quando desenhar a grade, lembre-se que cada componente contém a sua célula ‘Voct nio pode colocar mais de um componente na mesmacélula, no entanto, oinverso ino é verdadeiro; um componente pode abranger virias células. Isso € compreensivel, mesmo porque no planejamento inicial o botio se encontra ‘em uma célula que abrange duas colunas. Crieum novo Java Visual Classe digite no nome daclasse TrabGridBagLayout. Em Style, selecione a opeiio Frame. Mantenha checadas as opges public static void ‘main(Stringf] args), Constructors from superclass c Inherited abstract methods. Clique no botio Finish, Selecione na arvore de componentes, em Java Beans, jContentPane ¢ altere a ‘propriedade layout para null. Altere também otamanho da janela para 350, 180em size. Em Swing Components, vocé adicionard os componentes listados a seguir: + 2Label + 1JTextField + 1yPasswordField Altere as seguintes propriedades de cada componente como mostrado na Tabela 8.2: Tabela 8.2 ‘Componente Propriedade itabel text iabet! text ‘Button text Entrar 94 Dommanoo 0 Ecurse Arraste-os e posicione-os mais ou menos como mostrado na imagem (Figura 8.21) a seguir: Ses sj None Seoa: [ Figura 8.21 Selecione os componentes jLabel e jLabel! clicando no primeiro componente e, com a tecla CTRL ou SHIFT pressionada, vocé clica no segundo componente. Clique com o direto sobre um delese selecione a opgdo Customize Layout Figura 8.22), Na guia Component clique no icone Align right. See Figura 8.22 Selecione os componentes TextField PasswordField efagao mesmo procedimento. Cartruto8—Trasainxno com avours 95 CONVERTENDO O PAINEL NULL PARA GriDBAGLayouT Depois de ajustados os componentes, selecione 0 componente jContentPane & alterea propriedade layout para GridBagLayout. eae Figura 6.23 Caso vocé deseje fazer alteragbes na propriedade constraint, selecione o compo- nente que deseja © depois em Properties vi a constraint ¢ visualize as restrigdes clicando no sinal de “+”, Evidentemente que esse tipo de explicagio nfo serd abordada nesse livro. v Die Em toda aplicagio Java Swing que voct fizer, utilizando VE e o style Frame, «a0 clicar no botio fechar da janela, 0 aplicativo deiva de ser visteel, mas fica ‘ainda asion utilizando a meméria da sua maquina. Para que iso nao ocorr 1nd até 0 método mostrado a seguir e adicione a linha em destagque: private void initialize() ( this.setsize(344, 200); this. setContent Pane (get JContent Pane }) this.setTitle(“Trabalhando com GridBagLayout”) + this. setDefaultCloseOperation (JFrame.EXIT_OM CLOSE) ; 96 | Demmnno 0 Bourse TRABALHANDO COM LayouTs SWT ‘SWT continua tabalhando com layouts, assim comoo Swing faz,oferecendoassim ‘mais de um layout, Nesse livro sero abordados os seguintes layouts: © FillLayout + FormLayout + GridLayout © RowLayout Esses layouts serio demonstrados também pelo VE como os layouts anteriores. O tayour FiitLayour Crie um novo Java Visual Classe digite no nome da classe ‘TrabFillLayout, Em Style, expanda.a pasta SWTT e selecione a ope Shell. Mantenha checadas as opgdes Public static void main(String{] args), Constructors from superclass ¢ Inherited abstract methods. Clique no botio Finish, Selecionando em Java Beans componente sShell, vi até suas propriedades, no paine! Properties, caltere seu layout para FillLayout. Aoalteré-1o, clique no sinal de mais “+” existente ao lado esquerdo da propriedade layout para exibir mais itens. pbs JoineDedvain CEMA cook GR TA [Preserty = lay >faldnane -marginteight rargeiith >spadng: \ | type eon rau % asiriced false a Figura 8.24 Cantruvo 8 Tanatsiaxno comttarours 7 FillLayout é 0 mais simples das classes de layout, em SWT, onde sto colocados {todos os controles em uma tnica coluna ou linha e faz com que todos tenhiam o mesmo tamanho, Como ele trabalha em linha ou coluna, em type vocé tem apenas dois valores; ou ESWT.HORIZONTAL que dispée uma saidaemumatinicalinhaouéSWT.VERTICAL, ue dispde uma safda em uma dni coluna, ‘Sendo assim, se vocé mantiverem typeo valor HORIZONTAL, eadicionarapenas ‘umbotio (na paleta Swing Controls, selecionando Button), ele ocupars todo oespago existente do layout no seu aplicativo. Figura 0.25 Se vocé esticar ou diminuira sua janela, voc® notard que o botio acompanha seu tamanho. 98 Dommsanno o Ecurse Adicionando mais dois botdes voc® teri um layout com trés botdes distribuidos igualmente, como voc® pode ver na imagem a seguir (Figura 8.27): Shell ey Figura 8.27 Altere agora na propriedade do layout, em type, selecionando VERTICAL, Po aase "0 a a a A seguir vocé tem uma tabela (Tabela 8.3) no qual mostra o significado dos itens ‘enxistentes nesse layout além do type, € claro: (Cartruto 8-Teasatnanno com tarours ” Tabela 8.3, Campo Significado pe ‘Aorientagdo dolayout, onde um é HORIZONTAL oué VERTICAL. 0 valor padrlo € HORIZONTAL. ‘marginHleighe ‘A quantidade de espago.em pixels para ser usada como uma margem Aesquerda ¢ dreita dos controles.O valor padrio € zero. marginWidth ‘Agquantidade de espago.em pixels para ser usada como umamargem 4o topo e abaixo dos controles.O valor padrio € zero. spacing A quantidade em pixels deespago entre os controles. O tayour GripLayour Crieum novo Java Visual Classe digitenonome daclasse TrabGridLayoutSWT. Em Style, expanda a pasta SWT e selecione a opsio Shell, Mantenha checadas as ‘opsdes publiestatic void main(String{] args), Constructors from superclasse Inherited abstract methods. Clique no botdo Finish Selecionando em Java Beans o componente sShell, v4 até suas propriedades, no painel Properties, ¢ altere seu layout para GridLayout. Adicione dois botdes, um ao lado do outro. eee etek ees wei) [eam » Figura 8.29 Note que surgird uma tabela pontithada ao redor dos botes, dando acada um uma célula onde se alojario, 100 | Dowmaxoo 0 Eeurse Expandindo o layout, em Properties, vocé notard que existem muitas opgdesnesse tipo de layout. Note também que o campo numColumns esti exibindo 0 niimero dois, indicando ‘que existem 2 colunas. Se vocé criar um terceiro botdo, ao lado do segundo, e voltar esse campo, notaré que ele se alterou automaticamente. Vocé também pode alterar aqui antes de adicionar 0 componente desejado, & claro, GridLayout usa um algoritmo poderoso e complexo para posicionar controles dentro de uma grade de células retangulares. Podem ser criadas muitas interfaces de uususrio com grades. Isto faz com que o layout do tipo GridLayout sejadestinado auma ‘gama maior de aplicagSes que FillLayout ou RowLayout, Em particular, GridLayout prové um bom meio para posicionar todos os controles dentro de uma janela sem recorrer a combinagées aninhadas. ‘A seguir uma tabela com os significados de cada campo existente no layout (Tabela 8. ‘Tabela 84 Cartruto8—Teasananpocomiarouts | 101 Campo smarginWidth ‘margintteight horizontalSpacing verticalSpacing ‘mum Columns ‘makeCotunnsEqualWideh Signifieado ‘A quantidade de espago em pixels usados como uma mar- ‘gem Aesquerda e direita dos controles. O valor padrio €S ‘A quantidade de espago em pixels para ser usada como uma, 'margem do topo e abaixo dos contoles. O valor padrio é ‘Aquantidade de espago em pixels entre controtesnadireg0, horizontal. O valor padrao € 5 Agquantidade de espagoem pixelsentrecontroles na directo vertical. 0 valor padrio é5. (© némero de colunas no layout. O valor padro 6 1 Indica que todas as colunas dentro do layout tro a mesma ra. O valor padro false O tayour RowLayouT Crieum novo Java Visual Classe digite no nome da classe TrabRowLayout. Em Style, expanda a pasta SWT e selecione a opgo Shell. Mantenha checadas as opcdes public static void main(String(] args), Constructors from superclass ¢ Inherited abstract methods, Clique no botio Finish. Selecionando em Java Beans o componente sShell, vi até suas propriedades, no painel Properties, ealtere seu layout para RowLayout. Adicione 6 botdes a esse aplicativo. Note como eles se comportario. ‘Note que quando o preenchimento de uma linha ¢ atingido, o controle passa para uma ‘Outra linha. O comportamente ¢ similar 20 FlowLayout do Java. Figura 8.31 102 | Dosananno o Bourse Va até a propriedade layout e atere o campo type para VERTICAL. ‘@Trabathando com Row. ayout Figura 8.32 RowLayout posicionacontroles em linhas ou colunas mas, diferente do FillLayout, nilo preenche todo 0 espaco dispontvel na composicio. RowLayout também difere de FillLayout porque é raramente usado como um tnico controle. Ao invés disso, RowLayout é mais usado frequentemente para posicionar uma linha de botdes. A seguir voc# tem uma tabela com os campos disponiveis para se trabalhar nesse layout (Tabela 8.5): Tabela 85 Campo Signific ‘pe ‘A orientago do layout, onde um é HORIZONTAL ou é VERTICAL. valor padriio é HORIZONTAL. ‘marginWidth A quantidade de espago.em pixels usados como uma margem esquerda marginHeight spacing wrap €edireita dos coatroles.O valor ps é zero. ‘A quantidade de espago em pixels para ser usada como uma margem do topo ce abaixo dos controls. O valor padrlo é zero, ‘A quantidade em pixels de espago entre 0s controtes.O valor padrdo 63. Indica que serio colocados controles na préxima linha se houver espago insuficiente na linha atual. O valor padrio é true, Cartruto8—Tranusunpocomtavours | 103 Tabela 8.5 (continuacio) Campo Significad ‘pack Indicaseotamanho de cada controle que usa seu RowData (voc8 pode ver instify rmarginTop smarginRight ‘marginBottom ‘marginLeft essa propriedade no campo layoutData, selecionando um botfo) serd configurado. Se false, todos os controles sero redimensionados no tamanho do maior controle. O valor padrlo € true. Indica se todos os controles em uma inha (ou coluna)tema mesma altura (ou largura). Este campo controla a dimensio oposta do layout. Por cexemplo, quando fill true e ype é HORIZONTAL, a altura de cada controle na linha ser6 ajustada para ser mais alta na linha . Se type for ‘VERTICAL, €ajustadaa largura de ada controle para er ocontrolemais largo na coluna, O padrio € false, Indica que qualquer espago que permanecer depoisque oscontroles forem posicionados deverd ser alocado entre os controles, aumentando 0 ‘espagamento. O padri € false. ‘A quantidade de espago além de marginHeight, sendo acrescentada a ‘margem a0 topo dos controles. O valor padrio é 3. ‘A quantidade de espago além de marginHeight .sendo acrescentadaa ‘margem inferior dos controles. O valor padrio € 3. ‘A quantidade de espago além de marginWidth , sendo acrescentada a ‘margem esquerda dos controles. O valor padro 6 3. O tayouT FormLayour FormLayout é talver.o layout de uso mais geral eflexivel em SWT. O algoritmo olayout esté baseado no conceito de anexos. Um anexo prende a extremidade de um ‘ou controle & extremidade de outro controle ou para uma posigo dentro de uma ‘combinacio. Este prine{pio muito simples permite criar interfaces de usuérios comple~ x08 criando um elemento de cada vez. Infelizmente, trabalhar ness tipo de layout no VE é muito complexo, onde voc® terd muito mais trabatho manual, digitando cédigos em quantidade, do que fazendo so visual do programa, Esperamos que até a préxima versio haja um suporte maior ‘esse tipo de layout, na parte de design. 104 | Dounenoo o Eeurse Crieum novo Java Visual Classe digite no nome daclasse TrabFormLayout, Em Style, expanda a pasta SWT e selecione a opgio Shell, Mantenha checadas as opgBes public static void main(String{] args) , Constructors from superclass e Inherited abstract methods. Clique no bot Finish, Para esse exemplo, adicione um botdo. Coloque no seu rétulo Botiio 1. Adicione mais um botio ¢ coloque em seu rétulo Botdo 2. Selecionando em Java Beans 0 componente sShell, vi até suas propriedades, no view Properties, alter seu layout para FormLayout. Voc® notard que um botio ficou sobreposto ao outro. No cédigo adicione as linhas mostradas a seguir em destaque: ‘TrabFormLayoutjava package br com. integrator.cap08: import org.eclipse.swt.graphics.Point; import org.eclipse.swt widgets. Shell import org.eclipse. swt widgets. Display; import org.eclipse.swt. layout FormLayout: import org.eclipse. swt widgets. Label: import org.eclipse. swt.SWT; import org.eclipse.swt .widgets.putton; import org.eclipse.swt. layout .FornData? import org.eclipse. swt widgets Composite; Amport org-eclipse.ewt. layout. FormAttachment public class TrabFormLayout { private Shell sShell = null private Button button = null; private Button buttonl = null? public TrabFormLayout () { super (7 1 Public static void main(String!] arga) ( Display display = Display.getDefault (7 ‘TrabFormlayout thisClass = new TrabFormLayout ( ); thisClass.createsshell ( ): thisClass.sshell.open(); Carrruvo8—Trasausunpocomtarours | 105 while (!thisClass.sShell.isDisposed( )) { Af (!display.readandDispatch ( )) display.sleep(); ) display.dispose()+ , private void createsshell() { FornLayout formLayoutl = new FormLayout ( ); ‘Shell = new Shell ( }3 sShell. set Text ("Trabalhando con FormLayout") + ‘sShel1 -setLayout (formtayout!) + ‘sShel1.setSize (new org.eclipse.swt graphics. Point (231, 136) ) button = new Button (sShell, SwT.NONE) ; button. setText ("Bot ao 1”); FormData datal = new Formbata(); datal. top = new FormAttachnent (10) : datal. left = new FormAttachmant (30) ; datal.right = new ForaAttachment (50) + button. setLayoutData (datal) ; button] = new Button (sshell, SWr.NONE) ; buttonl .setText ("Botdo 2”); FormData data? = new ForaData( ) data2.left = new FormAttachnent (button, 0, SWI.LEFT) + data2. top = new Formattachment (button) ; buttont .settayoutData (data2) (Oresultado ser4 igual ao mostradonaimagemaseguir Figura.) quando vocé rodar Programa: 106 | Dommnanoo o Ecurse Ml Trabathando com con Baio? Figura 8.33 Note que o segundo botdo depende do primeiro para ter um perfeito posicionamento, ‘Se voce dimensionar a janela, verd que o primeiro botio se dimensiona, mas segundo fica estitico, sempre no paralelo a0 primeiro, no que se diz respeito ao seu inicio, Carfruto 9 Trabalhando com Componentes Atéaqui, voc® aprendeu como iniciar um aplicativo eeriar uma interface amigavel em seu programa criado no VE no Eclipse. Esses aplicativos criados foram desenvolvidos em umainterface de usustio grética (GUI, Graphical User Interface), no qual the proporeionaa visualizagioemuma anela, «em que voc€ pode manipula tanto com mouse comio com 0 teclado. Agora vocé seré levado a conhecer um pouco mais da interface grafica do Java, usando seus componentes mais comuns. INTRODUGAO AOS COMPONENTES DA BIBLIOTECA SWING Noinicio dalinguagem Java, uma ibliotecadeclasses chamadade AWT (Abstract, ‘Window Toolkit —caixa de ferramentas de janelas abstratas) para programagio GUI avangada, fazendo assim desde o principio parte do JDK (Java Development Ki). Essa biblioteca funcionava bem em aplicagdes mais simples, mas infelizmente ela Indo atendia a criago de uma interface mais complexa, rica em elementos grificos. O pior ocorria quando menus, barras de rolagem e campos de texto, demonstravam ‘Pequenas diferencas de comportamentos em diferentes plataforma 108 | Dowixaxoo 0 Beurse Em 1997, 6 anunciado o Java Foundation Classes, ou IFC, que substitu (einclui) ‘© AWT. A parte principal do JFC jogo novo decomponentes de interface deusuio que sG0 muito mais complexos, flexiveis e portieis. Estes componentes novos sia chamados de SWING AJFC nao inclui apenasem seus recursos apenas componentes Swing, mas também ‘uma API de acessibitidade, uma API 2D e ete. v Nota O Swing nto & um substitute completo do AWT, 56 porque simplesmente fornece uma interface de usuarios mais completa ¢ complexa. A arguitetura bésica do AWT ainda permanece inalterada. Mas © QUE £ SWING? (© Swing 6 o kit de ferramentas GUI que a Sun Microsystems desenvolveu para habilitar o empreendimento de desenvolver em Java. Os programadores podem usar ‘Swing para criar amplas aplicagées de Java com uma larga escala de components poderosos. Além disso, voc® pode estender facilmente ou pode modificar estes ‘componentes para controlar seu aparecimento e comportamento. (© nome representa a escolha da colaboragio de seus desenhistas quando 0 projeto {oj elaborado em 1996, Swing é de fato parte de uma familia maior de produtos Java conhecida como Java Foundation Classes (JFC), que incorporam muitas das caracte- ristcas da Netscape Intemet Foundation Classes (IFC), como também aspectos de design da divisto IBM's Taligent ¢ Lighthouse Design. TRABALHANDO COM COMPONENTES SWING A partir de agora voc® ird trabalhar com um conjunto de componentes da classe Swing, incluindo as ja conhecidas vistas anteriormente. Inicie um novo projeto chamado de TrabComponentesS wing. Crieum pacote, que ‘no caso do livro, foi criado com o nome de br.com.integrator.cap09.swing, Inicie a criago de uma nova aplicagdo, Nacaixa de dislogo New, selecione Visual Class e clique no botio Next. No nome da classe digite TrabCompSwing, Selecione Carrruto9—TranstianoocomComronesres | 109) ‘emStyle,no Swing, ocomponente Frame. Mantenha checadasas opgdes publiestatic ‘void main(String{] args), Constructors from superclass Inherited abstract methods Clique no botdo Finish. CriaNDo uM MENU ‘Uma curiosidade no desenvolvimento de aplicativos usando 0 VE € que vocé tem em Style duas opgdes para 0 desenvolvimento inicial de um aplicativo com menu. O primeiro éA pplication, que jd vem configurado com um menu inicial. O outro éaopgio que vocé escolheu, que nio tem um menu pré-configurado, Depois de aprender a organizar os virios tipos de componentes que podem ser colocados em uma janela através dos gerenciadores de layout, vocé conhecerd outro tipo de elemento de interface de ususrio, que sio 0s menus suspensos, tio comuns em ambientes gréficos, 'Nio é necessério um gerenciador de layout para colocar menus. Uma barra de menu ‘no topo da janela contém os nomes dos menus suspensos. Clicando em uma opgio através de seus nomes, este se abre e mostra seu contetido com itens do menu e/ou submenus. Ao clicar em um item desse menu, o menu se fecha e uma mensagem & ‘enviada ao aplicativo. Para criar um menu no VE do Eclipse, vé na paleta Swing Menus e selecione 0 componente JMenuBar. Swing Menus * FE menuser toolbar k 10 | Domnanno o Ecurse ‘V4 agora ao view Java Beans, e clique sobre o componente this. din) aaa pero i oreerrare > +=, Figura 9.2 (© Design ird ser alterado, Vocé verd uma pequena parte superior. {que representa o menu na <= Figura 9.3 Selecione o componente JMenu na paleta Swing Menus e clique sobre o compo- nente jJMenuBar na view Java Beans. Selecione o componente que surgi, chamado de Menu c na view Properties, no ite ArquivoetecleEnter. Figura 9.4 ‘Veja que no Design apareceu agora o menu com o texto chamado de Arquivo. No ‘campo mnemonic, clique no botio com trés pontinhos. Na caixa de dislogo Java Property Editor, selecione aletra A. Figura 9.5 Note que agora no menu, em Design, voce veré o menu Arquivo com a letra a ‘sublinhada. Clique no componente JMenultem cna view Java Beans clique sobre o ‘menu Arquivo. Evidentemente voc€ logo ird notar que no VE vocé nfo tem controle visual sobre os componentes do menu. Para adicionar 0 texto do item de menu, selecione o componente recém adicionado, chamado de jMemultemena view Properties {igiteno campo text Novoe confirme novamente com atecla Enter. Adicione mais um item de menu e digite no campo text Fechar. 112 | Dosmsaxno o Eeurse Na view Outline procure pelo método getJMenu. No cédigo do aplicativo, adicione a linha em destaque a seguir: private JMenu getaMenu() { Af (Menu == null) { 3Menu = new JMenu( )+ 3enu.setText (“Arquivo”) + SMenu. setMnemoni.c java awt event -KeyEvent .VK_A) jMenu.add (get aMenuTtem( )); jMonu.addSeparator () ; Stenu.add (getaMenuTtem] ( )) ¢ , return jMenu; ‘Ométodo addSeparator cria uma linha separadora entre o item de menu Novo eo item Fechar, Para visualizar o menu, e como ele esté ficando, vocé devers rodar 0 aplicativo. Antes de fazé-lo, em Outline, selecione main(String) © adicione © cédigo em destaque a seguir: public static vold main(string{] args) ( ‘TeabCompSwing tossnew TrabCompSwing(); tos. setVisible (true) ; Nao se esquega que para rodar, vocé deverd selecionar em Run a opcio Java Application, Figura 9.6 (Cartruto9~Tranatnapo com Comroneres 13 Aolado rieo menu Editare adicione no campo mnemonic aletraE, Coloque como itens Recortar, Copiar e Colar. Adicione mais um componente JMenu clicando sobre o componente jMenul e altere na sua propriedade, no campo text, colocando o texto Opgies. Clique no componente JCheckBoxMenultem e o adicione clicando sobre © ‘componente jMenu2-Opgdes. Na propriedade text, digite Somente Leitura. Adicione também sobre 0 componente jMenu2 dois componentes JRadioButtonMenultem. Digite na propriedade text Inserir eno outro Exeluir. Selecione © método gefJMenul na view Outline ¢ adicione um método ‘addSeparator no local indicado em destaque a seguir: Private Ienu getoMenul() { Af (Menul == null) { jMenul = new dMena( ); jMenul .setText ("Editar") : jMenul . setHnenonic (Java .awt .event .KeyBvent:.VK_E)2 jMenu -add (getdMenutten2(})2 jMenut add (get aMenuTtem3 (}): jMenul.add (get MenuTtemd ()) 2 ‘Menul .addSeparator () jMenu1.add (get Memu2()) , return jMenul; ? Selecionando em Java Beans o menu jMenu2, adicione 0 c6digo em destaque a seguir: Private Ienu getenu2() | if (jMenu2 == null) { $Menu2 = new dMena( ); jMenu2. set Text (“Opgbes”) + jMenu2. add (getJCheckBoxenuTtem( )) + ‘Menu2.addSeparator () ; jMenu2. add (getJRadioBut tonMenurtem( )) |jMenu2. add (get JRadioButtonMenuttem! ()) 7 } o return jMenu2; )

Você também pode gostar