blob: 8847f930509859d1f448c3b9377127ad8022c3bd [file] [log] [blame]
//
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
//
= Projetando uma GUI Swing no NetBeans IDE
:jbake-type: tutorial
:jbake-tags: tutorials
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Projetando uma GUI Swing no NetBeans IDE - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Projetando uma GUI Swing no NetBeans IDE
image::images/netbeans-stamp-80-74-73.png[title="O conteúdo desta página se aplica ao NetBeans IDE 6.9 e mais recente"]
Este tutorial conduzirá você pelo processo de criação da interface gráfica do usuário (GUI) para uma aplicação nomeada ContactEditor, utilizando GUI Builder do NetBeans IDE. No processo, será feito o layout de uma GUI inicial que permite que você exiba e edite informações de contato dos indivíduos incluídos em um banco de dados de funcionários.
Neste tutorial, você aprenderá a: usar a interface do GUI Builder, criar um Contêiner de GUI, adicionar, redimensionar e alinhar componentes, ajustar o ancoramento de componentes, definir o comportamento de redimensionamento automático de componentes, editar propriedades de componentes.
Este tutorial demora aproximadamente 30 minutos para ser concluído.
*Para concluir este tutorial, você precisa dos seguintes recursos e softwares.*
Software ou RecursoVersão Necessária
link:http://netbeans.org/downloads/index.html[+NetBeans IDE+]versão 6.9 e mais recente
link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+JDK (Java Development Kit)+]versão 6, 7 ou 8
== Introdução
O GUI Builder do IDE torna possível construir GUIs de aparência profissional sem um conhecimento profundo dos gerenciadores de layout. Você pode criar forms, simplesmente colocando componentes onde desejar.
Para obter descrições sobre o feedback visual do GUI Builder, é possível utilizar a link:quickstart-gui-legend.html[+Legenda de Feedback Visual do GUI Builder+].
=== Criando um Projeto
Como todo o desenvolvimento em Java no IDE ocorre dentro dos projetos, precisamos primeiro criar um projeto ``ContactEditor`` para armazenar os códigos-fonte e outros arquivos do projeto. Um projeto do IDE é um grupo de arquivos de códigos-fonte Java e metadados associados que inclui arquivos de propriedades específicos do projeto, um script de construção Ant que controla as definições de construção e execução e um arquivo ``project.xml`` , que mapeia destinos de Ant para comandos do IDE. Embora as aplicações Java geralmente consistam em vários projetos do IDE, para o objetivo deste tutorial, construiremos uma aplicação simples, inteiramente armazenada em um único projeto.
Para criar um novo projeto de aplicação ``ContactEditor`` :
1. Escolha Arquivo > Novo Projeto. Se preferir, é possível clicar no ícone Novo Projeto na barra de ferramentas do IDE.
2. No painel Categorias, selecione o nó Java e no painel Projetos, escolha Aplicação Java. Clique em Próximo.
3. Insira ``ContactEditor`` no campo Nome do Projeto e especifique o local do projeto.
4. Deixe desmarcada a caixa de seleção Utilizar Pasta Dedicada para Armazenar Bibliotecas.
5. Verifique se a caixa de seleção Definir como Projeto Principal está marcada e desmarque o campo Criar Classe Principal.
6. Clique em Finalizar.
O IDE criará a pasta ``ContactEditor`` no sistema no local designado. Essa pasta contém todos os arquivos associados do projeto, como o script Ant, pastas para armazenamento de códigos-fontes e testes e uma pasta para os metadados específicos do projeto. Para exibir a estrutura do projeto, utilize a janela Arquivos do IDE.
=== Criando um Contêiner JFrame
Após criar a nova aplicação, você pode ter percebido que a pasta Pacotes de Códigos-fonte na janela Projetos contém um nó ``<pacote default>`` vazio. Para prosseguir com a construção da nossa interface, precisamos criar um contêiner Java no qual colocaremos os outros componentes requeridos da GUI. Nessa etapa, criaremos um contêiner utilizando o componente ``JFrame`` e o colocaremos em um novo pacote.
Para adicionar um contêiner ``JFrame`` :
1. na janela Projetos, clique com o botão direito do mouse no nó ``ContactEditor`` e selecione Novo > Form JFrame.
Outra opção é localizar um form JFrame escolhendo Novo > Outro > Forms da GUI Swing > Form JFrame.
. Insira ``ContactEditorUI`` como Nome da Classe.
. Insira ``my.contacteditor`` como o pacote.
. Clique em Finalizar.
O IDE criará o form ``ContactEditorUI`` e a classe ``ContactEditorUI`` na aplicação ``ContactEditorUI.java`` e abrirá o form ``ContactEditorUI`` no GUI Builder. Observe que o pacote ``my.contacteditor`` substitui o pacote default.
== Familiarizando-se com o GUI Builder
Agora que já configuramos o novo projeto para a aplicação, vamos nos familiarizar com a interface do GUI Builder.
*Observação:* Para explorar a interface do GUI Builder com uma demonstração interativa, assista o screencast link:http://bits.netbeans.org/media/quickstart-gui-explore.swf[+Explorando o GUI Builder (.swf)+].
[.feature]
--
image::images/01_gb_ui-small.png[role="left", link="images/01_gb_ui.png"]
--
Quando adicionamos o contêiner JFrame, o IDE abriu o form ``ContactEditorUI`` recém-criado em uma guia do Editor com uma barra de ferramentas que contém vários botões, como mostra a ilustração anterior. O form ContactEditor aberto na view Design do GUI Builder e três janelas adicionais apareceram automaticamente ao longo das margens do IDE, permitindo navegar, organizar e editar forms GUI à medida que você os constrói.
As várias janelas do GUI Builder incluem:
* rea de Design. *A janela principal do GUI Builder para criar e editar forms de GUI do Java. O botão Código-fonte da barra de ferramenta permite exibir o código-fonte de uma classe; o botão Design permite a exibição gráfica dos componentes da GUI; o botão Histórico permite o acesso ao histórico local de alterações do arquivo. Os botões adicionais da barra de ferramentas oferecem acesso conveniente aos comandos comuns, como escolher entre os modos Seleção e Conexão, alinhamento de componentes, definição do comportamento de dimensionamento automático e exibição de forms.
* *Navegador. *Fornece uma representação de todos os componentes, ambos visual e não-visuais na sua aplicação, como uma hierarquia de árvore. O Navegador também oferece apresentação visual sobre qual componente da árvore está sendo editado no GUI Builder, bem como permite organizar componentes nos painéis disponíveis.
* *Paleta. *Uma lista customizável de componentes disponíveis contendo guias para jfc/swing e JavaBeans componentes awt, bem como gerentes de layout. Além disso, é possível criar, remover e reorganizar as categorias exibidas na Paleta utilizando o personalizador.
* *Janela Propriedades. *Exibe as propriedades do componente atualmente selecionado no navegador GUI Builder, janela janela, projetos, ou arquivos janela.
Se você clicar no botão Código-fonte, o IDE exibirá o código-fonte Java da aplicação no Editor com seções de código geradas automaticamente pelo GUI Builder e indicadas por áreas cinzas (elas ficam azuis quando selecionadas), chamadas Blocos Protegidos. Blocos Protegidos são áreas protegidas que não são editáveis na view de Código-fonte. Só é possível editar o código exibido nas áreas brancas do Editor na view de Código-fonte. Se for necessário fazer alterações no código em um Bloco Protegido, clique no botão Design para que o Editor do IDE volte ao GUI Builder, onde você poderá fazer os ajustes necessários ao form. Ao salvar as alterações, o IDE atualizará os códigos-fonte do arquivo.
*Observação:* para os desenvolvedores avançados, está disponível o Gerenciador de Paleta, que ativa adicionar componentes personalizados de JARs, bibliotecas ou projetos à Paleta. Para adicionar componentes personalizados por meio do Gerenciador de Paleta, escolha Ferramentas > Paleta > Componentes Swing/AWT.
== Conceitos-Chave
O GUI Builder do IDE resolve o problema central da criação de GUIs do Java otimizando o fluxo de dados da criação de interfaces gráficas, liberando os desenvolvedores das complexidades dos gerenciadores de layout do Swing. Ele faz isso estendendo o GUI Builder atual do NetBeans IDE para dar suporte ao paradigma "Design Livre" com regras simples de layout, fáceis de compreender e utilizar. À medida que você faz o layout do form, o GUI Builder fornece linhas-guias visuais sugerindo o espaçamento e alinhamento ideais dos componentes. Em segundo plano, o GUI Builder converte as decisões de design em uma UI funcional, que é implementada com o uso de um gerenciador de layouts GroupLayout e outras construções do Swing. Como ele utiliza um modelo de layout dinâmico, as GUIs construídas com o GUI Builder se comportam como o esperado em runtime, ajustando para acomodar as alterações feitas sem alterar os relacionamentos definidos entre os componentes. Quando você redimensionar o form, alterar configurações regionais ou especificar outra aparência, a GUI se ajustará automaticamente para respeitar a aparência do destino e os suplementos e deslocamentos da funcionalidade.
=== Design Livre
No GUI Builder do IDE, é possível construir forms simplesmente colocando os componentes onde quiser, como se estivesse utilizando posicionamento absoluto. O GUI Builder descobre quais atributos de layout são obrigatórios e gera o código automaticamente. Você não precisa se preocupar com suplementos, âncoras, preenchimentos, etc.
=== Posicionamento Automático do Componente (Encaixe)
À medida em que os componentes são adicionados a um form, o GUI Builder fornece feedback visual, que auxilia no posicionamento dos componentes com base na aparência e funcionalidade do seu sistema operacional. O GUI Builder oferece dicas in-line úteis e outros feedbacks visuais em relação ao local no qual os componentes devem ser colocados no form, encaixando automaticamente os componentes na posição ao longo das linhas-guias. Ele faz essas sugestões com base nas posições dos componentes já colocados no form, enquanto permite que o preenchimento permaneça flexível, de maneira que a aparência e a funcionalidade do destino diferente sejam processadas corretamente em runtime.
=== Feedback Visual
O GUI Builder também oferece feedback visual sobre as relações de ancoragem e encadeamento de componentes. Esses indicadores permitem identificar rapidamente as várias relações de posicionamento e o comportamento fixo dos componentes que afetam a maneira como a GUI aparecerá e se comportará em runtime. Isso acelera o processo de design de GUI, permitindo que você crie rapidamente interfaces visuais com aspecto profissional e que funcionam.
== Primeiro o Principal
Agora que você está familiarizado com a interface do GUI Builder, este é o momento para começar a desenvolver a UI da nossa aplicação ContactEditor. Nesta seção, veremos a utilização da Paleta do IDE para adicionar os vários componentes GUI necessários ao nosso form.
Graças ao paradigma Design Livre do IDE, não é necessário entrar em conflito com os gerenciadores de layout para controlar o tamanho e posição dos componentes nos contêineres. Tudo o que você precisa fazer é arrastar e soltar os componentes necessários no form da GUI conforme exibido nas ilustrações abaixo.
*Observação:* Consulte o screencast link:http://bits.netbeans.org/media/quickstart-gui-add.swf[+Adicionando componentes individuais e múltiplos componentes (.swf)+] para ver uma demonstração interativa na seção abaixo.
=== Adicionando Componentes: Conceitos Básicos
Embora o GUI Builder simplifique o processo de criação de GUI do Java, é sempre útil esboçar a maneira como quer que a interface se pareça antes de começar a fazer seu layout. Muitos designers de interfaces consideram isso uma técnica de "melhor prática", entretanto, para este tutorial, você pode simplesmente dar uma olhada como nosso form preenchido deve se parecer indo para a seção <<previewing_form,Visualização da GUI >>.
Como já adicionamos um JFrame como contêiner de nível superior do form, a próxima etapa é adicionar dois JPanels que nos permitirão unir os componentes da nossa UI utilizando bordas com títulos. Veja as ilustrações abaixo e observe o comportamento "arrastar e soltar" do IDE para fazer isso.
Para adicionar um JPanel:
1. Na janela Paleta, selecione o componente Painel na categoria Contêineres do Swing clicando e soltando o botão do mouse.
2. Mova o cursor até o canto esquerdo superior do form no GUI Builder. Quando o componente estiver localizado próximo às margens superior e esquerda do contêiner, linhas-guia de alinhamento horizontal e vertical aparecerão indicando as margens preferenciais. Clique no form para colocar o JPanel nesse local.
O componente ``JPanel`` aparece no form ``ContactEditorUI`` com realce na cor laranja, o que significa que ele está selecionado. Após soltar o botão do mouse, pequenos indicadores serão exibidos para mostrar as relações de ancoragem do componente e um nó JPanel correspondente será exibido na janela Navegador, como mostra a ilustração a seguir.
[.feature]
--
image::images/02_add_panels_1-small.png[role="left", link="images/02_add_panels_1.png"]
--
Depois, precisamos redimensionar o JPanel para dar espaço aos componentes que serão inseridos posteriormente, mas antes tomemos um minuto para indicar outras funcionalidades de visualização do GUI Builder. Para fazer isso, precisamos desmarcar o JPanel que acabamos de adicionar. Como nós ainda não adicionamos uma borda com título, o painel desaparecerá. Observe, entretanto, que quando ao passar o cursor sobre o JPanel, as margens mudarão para cinza claro para que sua posição possa ser vista claramente. Você precisa apenas clicar em qualquer lugar no componente para selecioná-lo novamente e fazer com que os handles de redimensionamento e os indicadores de ancoragem reapareçam.
Para redimensionar o JPanel:
1. Selecione o JPanel recém-adicionado. Os pequenos handles de redimensionamento quadrados reaparecerão em torno do perímetro do componente.
2. Clique e segure o handle de redimensionamento na margem direita do JPanel e arraste-a até que a linha-guia de alinhamento pontilhada seja exibida próxima à margem do form.
3. Solte o handle de redimensionamento para redimensionar o componente.
O componente ``JPanel`` é estendido para ficar entre as margens esquerda e direita do contêiner de acordo com o deslocamento recomendado, como mostra a ilustração abaixo.
[.feature]
--
image::images/02_add_panels_2-small.png[role="left", link="images/02_add_panels_2.png"]
--
Agora que adicionamos um painel para conter a informação Nome da nossa UI, precisamos repetir o processo para adicionar outro diretamente abaixo da primeira para a informação de E-mail. Consultando as ilustrações abaixo, repita as duas tarefas anteriores, prestando atenção ao posicionamento sugerido pelo GUI Builder. Observe que o espaçamento vertical sugerido entre os dois JPanels é muito mais estreito que entre as margens. Quando você tiver adicionado o segundo JPanel, redimensione-o para que preencha o espaço vertical restante do form.
[.feature]
--
image::images/02_add_panels_3-small.png[role="left", link="images/02_add_panels_3.png"]
--
[.feature]
--
image::images/02_add_panels_4-small.png[role="left", link="images/02_add_panels_4.png"]
--
[.feature]
--
image::images/02_add_panels_5-small.png[role="left", link="images/02_add_panels_5.png"]
--
Como queremos distinguir visualmente as funções nas seções superior e inferior da nossa GUI, precisamos adicionar uma borda e título a cada JPanel. Primeiro faremos isso utilizando a janela Propriedades e depois a experimentaremos utilizando o menu pop-up.
Para adicionar bordas de título aos JPanels:
1. Selecione o JPanel superior no GUI Builder.
2. Na janela Propriedades, clique no botão de reticências (...) ao lado da propriedade Borda.
3. No editor de Bordas do JPanel exibido, selecione o nó TitledBorder no painel Bordas Disponíveis.
4. No painel Propriedades abaixo, insira ``Name`` para a propriedade Título.
5. Clique nas reticências (...) ao lado da propriedade Fonte, selecione Negrito em Estilo de Fonte e insira 12 no Tamanho. Clique em OK para fechar as caixas de diálogo.
6. Selecione o JPanel inferior e repita as etapas de 2 a 5, mas dessa vez clique com o botão direito do mouse no JPanel e acesse a janela Propriedades utilizando o menu pop-up. Insira ``E-mail`` para a propriedade Título.
As bordas com título serão adicionadas a ambos componentes ``JPanel`` .
[.feature]
--
image::images/02_add_borders-small.png[role="left", link="images/02_add_borders.png"]
--
=== Adicionando Componentes Individuais ao Form
Agora precisamos começar a adição dos componentes que apresentarão as informações de contato reais na nossa lista de contatos. Nessa tarefa, adicionaremos quatro JTextFields que exibirão as informações de contato e os JLabels que as descreverão. Ao fazer isso, observe as linhas-guia horizontais e verticais que o GUI Builder exibe, sugerindo o espaçamento preferencial dos componentes conforme definido pela aparência e funcionalidade do sistema operacional. Isso assegura que nossa GUI seja processada automaticamente respeitando a aparência do sistema operacional de destino em runtime.
Para adicionar um JLabel ao form:
1. Na janela Paleta, selecione o componente Label na categoria Controles do Swing.
2. Mova o cursor acima do JPanel ``Name`` adicionado anteriormente. Quando as linhas-guias aparecerem, indicando que o JLabel está posicionado no canto superior esquerdo do JPanel com pequena margem nos cantos superior e esquerdo, clique para posicionar o label.
O JLabel será adicionado ao form e um nó correspondente, representando o componente, será adicionado à janela Inspetor.
Antes de prosseguir, precisamos editar o texto de exibição do JLabel que acabamos de adicionar. Embora seja possível editar o texto de exibição do componente em qualquer ponto, a maneira mais fácil é fazer isso à medida que o adiciona.
Para editar o texto de exibição de um JLabel:
1. Clique duas vezes no JLabel para selecionar a exibição de texto.
2. Digite ``Nome:`` e pressione Enter.
O novo nome do JLabel é exibido e a largura do componente será ajustada como resultado da edição.
Agora adicionaremos um JTextField para que possamos ter uma vista rápida da funcionalidade de alinhamento da linha de base do GUI Builder.
Para adicionar um JTextField ao form:
1. Na janela Paleta, selecione o componente Campo de texto na categoria Controles do Swing.
2. Mova o cursor imediatamente à direita do JLabel ``Nome:`` recém-adicionado. Quando a linha-guia horizontal aparecer, indicando que a linha de base do JTextField está alinhada com aquela do JLabel e o espaçamento entre os dois componentes for sugerido com uma linha-guia vertical, clique para posicionar o JTextField.
O JTextField se encaixará na posição no form alinhado com a linha de base do JLabel, conforme mostra a ilustração abaixo. Observe que o JLabel mudou ligeiramente para baixo para se alinhar à linha de base do campo de texto mais alto. Como sempre, um nó representando o componente será adicionado à janela Navegador.
image::images/03_indy_add_1.png[]
Antes de prosseguir, precisamos adicionar mais um JLabel e JTextField imediatamente à direita desses já adicionados, conforme mostra a ilustração abaixo. Agora insira ``Sobrenome:`` como texto de exibição do JLabel e mantenha, por enquanto, o texto do espaço reservado dos JTextFields como está.
image::images/03_indy_add_2.png[]
Para redimensionar um JTextField:
1. selecione o JTextField que nós acabamos de adicionar à direita do JLabel ``Sobrenome:`` .
2. Arraste o handle de redimensionamento direito do JTextField em direção à margem direita do JPanel de fechamento.
3. Quando as linhas-guia de alinhamento vertical aparecerem sugerindo a margem entre o campo de texto e a margem direita do JPanel, solte o botão do mouse para redimensionar o JTextField.
A margem direita do JTextField se encaixará em alinhamento à margem recomendada do JPanel, conforme mostra a ilustração abaixo.
image::images/03_indy_add_3.png[]
=== Adicionando Vários Componentes ao Form
Agora adicionaremos os JLabels ``Título:`` e ``Apelido:`` que descrevem dois JTextFields que adicionaremos em um minuto. Arrastaremos e soltaremos os componentes pressionando a tecla Shift para adicioná-los rapidamente ao form. Enquanto fazemos isso, observe novamente que o GUI Builder exibe linhas-guia horizontais e verticais sugerindo o espaçamento preferencial do componente.
Para adicionar vários JLabels ao form:
1. Na janela Paleta, selecione o componente Label na categoria Controles do Swing clicando e soltando o botão do mouse.
2. Mova o cursor sobre o form diretamente abaixo do JLabel ``Nome:`` adicionado anteriormente. Quando as linhas-guia aparecerem, indicando que a nova borda esquerda do JLabel está alinhada à do JLabel acima e houver uma pequena margem entre ambos, clique pressionando a tecla Shift para posicionar o primeiro JLabel.
3. Ainda pressionando a tecla Shift, clique para colocar outro JLabel imediatamente à direita do primeiro. Certifique-se de soltar a tecla Shift antes de posicionar o segundo JLabel. Se você se esquecer de soltar a tecla Shift antes de posicionar o último JLabel, basta pressionar a tecla Escape.
Os JLabels serão adicionados ao form criando uma segunda linha, como mostra a ilustração abaixo. Os nós que representam os componentes serão adicionados à janela Navegador.
image::images/04_multi-add_1.png[]
Antes de continuar, precisamos editar o nome do JLabels para que possamos ver o efeito dos alinhamentos que definiremos posteriormente.
Para editar o texto de exibição de JLabels:
1. clique duas vezes no primeiro JLabel para selecionar a exibição de texto.
2. Digite ``Título:`` e pressione Enter.
3. Repita as etapas 1 e 2, inserindo ``Apelido:`` para a propriedade de nome do segundo JLabel.
Os novos nomes dos JLabels serão exibidos no form e mudarão como resultado das larguras editadas, como mostra a ilustração abaixo.
image::images/04_multi-add_2.png[]
=== Inserindo Componentes
*Observação:* Consulte o screencast link:http://bits.netbeans.org/media/quickstart-gui-insert.swf[+Inserindo componentes (.swf)+] para ver uma demonstração interativa na seção abaixo.
Geralmente, é necessário adicionar um componente entre componentes já colocados em um form. Quando você adiciona um componente entre dois componentes existentes, o GUI Builder automaticamente os mudará para dar espaço para o novo componente. Para demonstrar isso, inseriremos um JTextField entre os JLabels adicionados anteriormente, como mostram as duas ilustrações abaixo.
Para inserir um JTextField entre dois JLabels:
1. Na janela Paleta, selecione o componente Campo de texto na categoria Controles do Swing.
2. Mova o cursor acima dos JLabels ``Título:`` e ``Apelido:`` na segunda linha de maneira que o JTextField sobreponha ambos e fique alinhado às suas linhas de base. Se você tiver dificuldade em posicionar o novo campo de texto, poderá encaixá-lo à linha-guia esquerda do JLabel ``Apelido`` , como mostra a primeira imagem abaixo.
3. Clique para posicionar o JTextField entre os JLabels ``Título:`` e ``Apelido:`` .
O JTextField se encaixará entre os dois JLabels. O JLabel da extremidade direita muda em direção à direita do JTextField para acomodar o deslocamento horizontal sugerido.
image::images/05_insert_1.png[]
image::images/05_insert_2.png[]
Ainda precisamos adicionar outro JTextField ao form que exibirá o apelido do contato no lado direito do form.
Para adicionar um JTextField:
1. Na janela Paleta, selecione o componente Campo de Texto na categoria Swing.
2. Mova o cursor para a direita do label ``Apelido`` e clique para posicionar o campo de texto.
O JTextField se encaixará ao lado esquerdo do JLabel.
Para redimensionar um JTextField:
1. Arraste os handles de redimensionamento do JTextField do label ``Apelido:`` adicionado na tarefa anterior à direita do JPanel de fechamento.
2. Quando as linhas-guia de alinhamento vertical aparecerem sugerindo a margem entre o campo de texto e as margens do JPanel, solte o botão do mouse para redimensionar o JTextField.
A margem direita do JTextField se encaixará em alinhamento com a margem recomendada do JPanel e o GUI Builder deduzirá o comportamento de redimensionamento correto.
. Pressione Ctrl-S para salvar o arquivo.
== Avançando
Alinhamento é um dos aspectos mais fundamentais da criação GUI com aparência profissional. Na seção anterior, tivemos uma vista rápida das funcionalidades de alinhamento do IDE durante a adição dos componentes JLabel e JTextField ao nosso form ContactEditorUI. Depois, veremos de maneira mais profunda as funcionalidades de alinhamento do GUI Builder, conforme trabalhamos com os outros componentes necessários para a nossa aplicação.
=== Alinhamento de Componentes
*Observação:* Consulte o screencast link:http://bits.netbeans.org/media/quickstart-gui-align.swf[+Alinhando e ancorando componentes (.swf)+] para ver uma demonstração interativa na seção abaixo.
Sempre que você adiciona um componente a um form, o GUI Builder os alinha efetivamente, conforme evidenciado pelas linhas-guia de alinhamento exibidas. Entretanto, às vezes, também é necessário especificar diferentes relacionamentos entre os grupos de componentes. Anteriormente, nós adicionamos quatro JLabels necessários para a nossa GUI ContactEditor, mas nós não os alinhamos. Agora alinharemos as duas colunas de JLabels para que as margens direitas se alinhem.
Para alinhar componentes:
1. mantenha pressionada a tecla ``Ctrl`` e clique para selecionar os JLabels ``Nome:`` e ``Título:`` do lado esquerdo do form.
2. Clique no botão Alinhar à Direita na coluna (image::images/align_r.png[]) na barra de ferramentas. Alternativamente, clique com o botão direito do mouse em um deles e escolha Alinhar > Direita na coluna no menu pop-up.
3. Repita isso também para os JLabels ``Sobrenome:`` e ``Apelido:`` .
A posição dos JLabels muda para que as margens direitas do texto de exibição sejam alinhadas. Os relacionamentos de ancoragem serão atualizados, indicando que os componentes foram agrupados.
Antes de finalizarmos com os JTextFields adicionados anteriormente, precisamos nos certificar de que os dois JTextFields que inserimos entre os JLabels estejam definidos para se redimensionarem corretamente. Ao contrário dos dois JTextFields que foram esticados para a margem direita do form, o procedimento de redimensionamento dos componentes inseridos não é definido automaticamente.
Para definir o procedimento de redimensionamento de um componente:
1. Clique nos dois componentes JTextField inseridos para selecioná-los no GUI Builder.
2. Com os dois JTextFields selecionados, clique com o botão direito do mouse em um deles e escolha Redimensionamento automático > Horizontal no menu pop-up.
Os JTextFields serão definidos com redimensionamento horizontal em runtime. As linhas-guia de alinhamento e os indicadores de ancoragem serão atualizados, fornecendo comentário visual dos relacionamentos dos componentes.
Para configurar os componentes para que tenham o mesmo tamanho:
1. Clique em todos os quatro JTextFields do form para selecioná-los.
2. Com os JTextfields selecionados, clique com o botão direito do mouse em um deles e escolha Definir Mesmo Tamanho > Mesma Largura no menu pop-up.
Todos os JTextFields terão a mesma largura definida e os indicadores serão adicionados na parte superior destes, fornecendo feedback visual dos relacionamentos dos componentes.
Agora precisamos adicionar outro JLabel que descreva a JComboBox que permitirá aos usuários selecionar o formato das informações que nossa aplicação ContactEditor exibirá.
Para alinhar um JLabel a um grupo de componentes:
1. Na janela Paleta, selecione o componente Label na categoria Swing.
2. Mova o cursor abaixo dos JLabels ``Nome:`` e ``Título:`` no lado esquerdo do JPanel. Quando as linhas-guia aparecerem, indicando que a nova borda direita do JLabel está alinhada às margens direitas do grupo de componentes acima (os dois JLabels), clique para posicionar o componente.
O JLabel se encaixará em uma posição alinhada à direita com a coluna dos JLabels acima, conforme mostra a ilustração abaixo. O GUI Builder atualiza as linhas de status de alinhamento, indicando as relações de espaçamento e ancoragem do componente.
[.feature]
--
image::images/06_align_1-small.png[role="left", link="images/06_align_1.png"]
--
Como nos exemplos anteriores, clique duas vezes no JLabel para selecionar o texto de exibição e insira ``Exibir Formato:`` para nome de exibição. Observe que quando o JLabel se encaixa na posição, os outros componentes mudam para acomodar o texto de exibição maior.
=== Alinhamento da Linha de Base
Quando você adiciona ou move componentes que incluem texto (JLabels, JTextFields, etc.), o IDE sugere alinhamentos baseados nas linhas de base do texto nos componentes. Quando inserimos o JTextField anteriormente, por exemplo, sua linha de base foi automaticamente alinhada aos JLabels adjacentes.
Agora adicionaremos a caixa de combinação que permitirá aos usuários selecionar o formato das informações que nossa aplicação ContactEditor exibirá. À medida que adicionamos JComboBox, alinharemos a linha de base com o texto do JLabel. Observe, mais uma vez as linhas-guia de alinhamento da linha de base aparece para nos auxiliar com o posicionamento.
Para alinhar as linhas de base dos componentes:
1. Na janela Paleta, selecione o componente Caixa de combinação na categoria Controles do Swing.
2. Mova o cursor à direita do JLabel recém-adicionado. Quando a linha-guia horizontal aparecer, indicando que a linha de base do JComboBox está alinhada à linha de base do texto do JLabel e o espaçamento entre os dois componentes for sugerido com uma linha-guia vertical, clique para posicionar a caixa de combinação.
O componente se encaixará em uma posição alinhada com a linha de base do JLabel à esquerda, conforme mostra a ilustração abaixo. O GUI Builder exibe as linhas de status, indicando as relações de espaçamento e ancoragem do componente.
[.feature]
--
image::images/06_align_2-small.png[role="left", link="images/06_align_2.png"]
--
Para redimensionar o JComboBox:
1. Selecione a Caixa de Combinação no GUI Builder.
2. Arraste o handle de redimensionamento na margem direita do JComboBox até que as linhas-guia de alinhamento apareçam sugerindo o deslocamento preferencial entre as margens do JComboBox e do JPanel.
Conforme mostra a ilustração abaixo, a margem direita do JComboBox se encaixará em alinhamento com a margem recomendada do JPanel e a largura do componente será automaticamente definida para se redimensionar ao form.
[.feature]
--
image::images/06_align_3-small.png[role="left", link="images/06_align_3.png"]
--
. Pressione Ctrl-S para salvar o arquivo.
A edição de modelos de componentes está além do escopo desse tutorial, portanto deixaremos, por enquanto, a lista de itens de espaço reservada da JComboBox como está.
== Revisando o Que Aprendemos
Terminamos um bom início de construção da nossa GUI ContactEditor, mas tomemos um minuto para recapitular o que aprendemos enquanto adicionamos mais alguns componentes que nossa interface requer.
Até agora, nós nos concentramos na adição de componentes à nossa GUI ContactEditor utilizando as linhas-guia de alinhamento do IDE para nos ajudar no posicionamento. Entretanto, é importante compreender que a ancoragem é outra parte integrante do posicionamento de componentes. Embora ainda não tenhamos discutido isso, você já se beneficiou com essa funcionalidade sem perceber. Como mencionado antes, ao adicionar um componente a um form, o IDE sugere o posicionamento preferencial da aparência de destino com linhas-guia. Depois de posicionados, os novos componentes também são ancorados na margem mais próxima do contêiner ou componente para assegurar que os relacionamentos entre os componentes sejam mantidos em runtime. Nesta seção, nós nos concentraremos em concluir as tarefas de maneira mais otimizada, ao ressaltarmos o trabalho que o GUI Builder está fazendo nos bastidores.
=== Adicionando, Alinhando e Ancorando
O GUI Builder permite fazer o layout de forms rápida e facilmente otimizando gestos típicos do fluxo de trabalho. Quando você adiciona um componente a um form, o GUI Builder o encaixa automaticamente na posição preferencial e define as relações de encadeamento necessárias para que você se concentre no design dos forms em vez de conflitar com detalhes de implementação complicados.
Para adicionar, alinhar e editar o texto de exibição de um JLabel:
1. Na janela Paleta, selecione o componente Label na categoria Controles do Swing.
2. Mova o cursor sobre o form imediatamente abaixo do título E-mail do JPanel inferior. Quando as linhas-guia aparecerem, indicando que está posicionado no canto superior esquerdo do JPanel com uma pequena margem nos cantos superior e esquerdo, clique para posicionar o JLabel.
3. Clique duas vezes no JLabel para selecionar a exibição de texto. Depois digite ``Endereço de E-mail:`` e pressione Enter.
O JLabel se encaixará na posição preferencial no form e será ancorado nas margens superior e esquerda do JPanel de fechamento. Assim como ocorreu anteriormente, um nó correspondente, representando o componente, também será adicionado à janela Navegador.
Para adicionar um JTextField:
1. Na janela Paleta, selecione o componente Campo de texto na categoria Controles do Swing.
2. Mova o cursor imediatamente à direita do label ``Endereço de E-mail`` recém-adicionado. Quando as linhas-guia aparecerem, indicando que a linha de base do JTextField está alinhada à linha de base do texto no JLabel e a margem entre os dois componentes for sugerida com uma linha-guia vertical, clique para posicionar o campo de texto.
O JTextField se encaixará à direita do JLabel ``Endereço de E-mail:`` e será encadeado ao JLabel. O nó correspondente também será adicionado à janela Inspetor.
. Arraste o handle de redimensionamento do JTextField em direção à direita do JPanel até que as linhas-guia de alinhamento sejam exibidas sugerindo o deslocamento entre as margens do JTextField e do JPanel.
A margem direita do JTextField se encaixará na linha-guia de alinhamento indicando as margens preferenciais.
Agora precisamos adicionar o JList que exibirá a lista de contatos completa do ContactEditor.
Para adicionar e redimensionar um JList:
1. Na janela Paleta, selecione o componente Lista na categoria Controles do Swing.
2. Mova o cursor imediatamente abaixo do JLabel ``Endereço de E-mail`` adicionado anteriormente. Quando as linhas-guia aparecerem, indicando que as margens superior e esquerda do JList estão alinhadas às margens preferenciais ao longo da margem esquerda do JPanel e do JLabel acima, clique para posicionar o JList.
3. Arraste o handle de redimensionamento do JList em direção à direita do JPanel de fechamento até que as linhas-guia de alinhamento sejam exibidas indicando que tem a mesma largura do JTextField acima.
O JList se encaixará na posição designada pelas linhas-guia de alinhamento e seu nó correspondente será exibido na janela Inspetor. Observe também que o form se expande para acomodar o JList recém-adicionado.
[.feature]
--
image::images/06_align_4-small.png[role="left", link="images/06_align_4.png"]
--
Como as JLists são utilizadas para exibir longas listas de dados, geralmente requerem a adição de um JScrollPane. Quando você adiciona um componente que requer um JScrollPane, o GUI Builder o adiciona automaticamente para você. Como os JScrollPanes são componentes não visuais, é necessário utilizar a janela Inspetor para exibir ou editar os JScrollPanes que o GUI Builder criar.
=== Dimensionamento de Componentes
*Observação:* Consulte o screencast link:http://bits.netbeans.org/media/quickstart-gui-resize.swf[+Redimensionando e recuando componentes (.swf)+] para ver uma demonstração interativa na seção abaixo.
É sempre benéfico definir vários componentes relacionados, como botões em caixas de diálogo modais, para que tenham o mesmo tamanho a fim de oferecer consistência visual. Para demonstrar isso, adicionaremos quatro JButtons ao nosso form ContactEditor que permitirão adicionar, editar e remover entradas individuais da nossa lista de contatos, como mostram as ilustrações abaixo. Depois, definiremos os quatro botões para que tenham o mesmo tamanho e possam ser facilmente reconhecidos e ofereçam a funcionalidade relacionada.
Para adicionar, alinhar e editar o texto de exibição de vários botões:
1. Na janela Paleta, selecione o componente Botão na categoria Controles do Swing.
2. Mova o JButton acima da margem direita do JTextField ``Endereço de E-mail`` no JPanel inferior. Quando as linhas-guia aparecerem, indicando que a linha de base e a margem direita do JButton estão alinhadas às margens do JTextField, clique pressionando Shift para posicionar o primeiro botão ao longo da margem direita do JFrame. A largura do JTextField diminui para acomodar o JButton onde você soltar o botão do mouse.
[.feature]
--
image::images/buttons_1-small.png[role="left", link="images/buttons_1.png"]
--
[.feature]
--
image::images/buttons_2-small.png[role="left", link="images/buttons_2.png"]
--
. Mova o cursor sobre o canto superior direito do JList no JPanel inferior. Quando as linhas-guia aparecerem, indicando que as margens superior e direita do JButton estão alinhadas às margens do JList, clique pressionando Shift para posicionar o segundo botão ao longo da margem direita do JFrame.
[.feature]
--
image::images/buttons_3-small.png[role="left", link="images/buttons_3.png"]
--
. Adicione dois outros JButtons abaixo dos dois já adicionados para criar uma coluna. Certifique-se de posicionar os JButtons de maneira que o espaçamento sugerido seja respeitado e consistente. Se você se esquecer de soltar a tecla Shift antes de posicionar o último JButton, basta pressionar a tecla Escape.
[.feature]
--
image::images/buttons_4-small.png[role="left", link="images/buttons_4.png"]
--
. Defina o texto de exibição de cada JButton. (Você pode editar o texto de um botão, clicando com o botão direito do mouse no botão e escolhendo Editar Texto. Ou você pode clicar no botão, pausar e clicar novamente.) Insira `Adicionar` para o botão superior, `Editar` para o segundo, `Remover` para o terceiro e `Default` para o quarto.
Os componentes JButton se encaixam nas posições designadas pelas linhas-guia de alinhamento. A largura dos botões muda para acomodar os novos nomes.
[.feature]
--
image::images/buttons_5-small.png[role="left", link="images/buttons_5.png"]
--
Agora que os botões estão posicionados onde queremos, nós definiremos os quatro botões para que tenham o mesmo tamanho e consistência visual, bem como para esclarecer a funcionalidade relacionada.
Para definir componentes do mesmo tamanho:
1. Selecione os quatro JButtons pressionando a tecla Control enquanto faz a seleção.
2. Clique com o botão direito do mouse em um deles e escolha Mesmo Tamanho > Mesma Largura no menu pop-up.
Os JButtons serão definidos com o mesmo tamanho do botão que tiver o nome mais longo.
[.feature]
--
image::images/buttons_6-small.png[role="left", link="images/buttons_6.png"]
--
=== Recuo
Frequentemente é necessário unir vários componentes em outro para que fique claro que pertencem a um grupo de funções relacionadas. Um caso típico, por exemplo, é colocar várias caixas de seleção relacionadas abaixo de um label comum. O GUI Builder permite fazer o recuo facilmente oferecendo linhas-guia especiais que sugerem o deslocamento preferencial para a aparência e funcionalidade do seu sistema operacional.
Nesta seção, adicionaremos alguns JRadioButtons abaixo de um JLabel que permitirá aos usuários personalizar a maneira como a aplicação exibe dados. Veja as ilustrações abaixo enquanto faz isso ou clique no link Exibir Demonstração seguindo o procedimento para ver uma demonstração interativa.
Para recuar JRadioButtons abaixo de um JLabel:
1. Adicione um JLabel nomeado ``Formato de Correspondência`` ao form abaixo do JList. Certifique-se de que o label esteja alinhado à esquerda do JList acima.
2. Na janela Paleta, selecione o componente Botão de Opção na categoria Swing.
3. Mova o cursor abaixo do JLabel recém-adicionado. Quando as linhas-guia aparecerem, indicando que a borda esquerda do JRadioButton está alinhada com a do JLabel, mova o JRadioButton ligeiramente para a direita até as linhas-guia de recuo secundárias aparecerem. Clique pressionando a tecla Shift para posicionar o primeiro botão de opção.
[.feature]
--
image::images/07_indent_1-small.png[role="left", link="images/07_indent_1.png"]
--
. Mova o cursor à direita do primeiro JRadioButton. Clique pressionando a tecla Shift para inserir o segundo e o terceiro JRadioButtons, respeitando o espaçamento sugerido do componente. Certifique-se de soltar a tecla Shift antes de posicionar o último JRadioButton.
. Defina o texto de exibição de cada JRadioButton. (Você pode editar o texto de um botão, clicando com o botão direito do mouse no botão e escolhendo Editar Texto. Ou você pode clicar no botão, pausar e clicar novamente.) Insira `HTML` para o botão de opção esquerdo, `Texto Simples ` para o segundo e `Personalizado` para o terceiro.
Três JRadioButtons serão adicionados ao form e recuados abaixo do JLabel ``Formato de Correio`` .
[.feature]
--
image::images/07_indent_3-small.png[role="left", link="images/07_indent_3.png"]
--
Agora, precisamos adicionar os três JRadioButtons a um ButtonGroup para permitir o comportamento de alternância esperado, no qual somente um botão de opção pode ser selecionado por vez. Por sua vez, isso assegurará que as informações de contato da aplicação ContactEditor serão exibidas no formato de e-mail da nossa escolha.
Para adicionar JRadioButtons a um ButtonGroup:
1. Na janela Paleta, selecione o componente Grupo de Botões na categoria Controles do Swing.
2. Clique em qualquer lugar na área de design do GUI Builder para adicionar o componente ButtonGroup ao form. Observe que o ButtonGroup em si não é exibido no form, no entanto, é visível na área Outros Componentes do Navegador.
3. Selecione os três JRadioButtons do form.
4. Na janela Propriedades, selecione buttonGroup1 na caixa de combinação da propriedade buttonGroup.
Três JRadioButtons serão adicionados ao grupo de botões.
[.feature]
--
image::images/07_group-small.png[role="left", link="images/07_group.png"]
--
. Pressione Ctrl-S para salvar o arquivo.
== Fazendo os Ajustes Finais
Conseguimos esboçar nossa GUI da aplicação ContactEditor, mas ainda há algumas coisas a serem feitas. Nesta seção, observaremos algumas das tarefas de layout típicas que o GUI Builder simplifica.
=== Finalizando
Agora precisamos adicionar os botões que permitirão aos usuários confirmar as informações que inserirem de um contato individual e adicioná-las à lista de contatos ou cancelar, deixando o banco de dados inalterado. Nesta etapa, adicionaremos os dois botões requeridos e os editaremos para que sejam exibidos com o mesmo tamanho no form, embora seus textos de exibição tenham tamanhos diferentes.
Para adicionar e editar o texto de exibição dos botões:
1. se o JPanel inferior estiver estendido na margem inferior do form JFrame, arraste a margem inferior do JFrame para baixo. Isso proporciona espaço entre as margens do JFrame e do JPanel para os botões OK e Cancelar.
2. Na janela Paleta, selecione o componente Botão na categoria Controles do Swing.
3. Mova o cursor sobre o form abaixo do JPanel E-mail. Quando as linhas-guia aparecerem, indicando que a borda direita do JButton está alinhada ao canto direito do JFrame, clique para posicionar o botão.
[.feature]
--
image::images/08_cancel-small.png[role="left", link="images/08_cancel.png"]
--
. Adicione outro JButton à esquerda do primeiro, certificando-se de colocá-lo utilizando o espaçamento sugerido ao longo da margem inferior do JFrame.
. Defina o texto de exibição de cada JButton. Insira ``OK`` para o botão esquerdo e ``Cancelar`` para o botão direito. Observe que a largura dos botões muda para acomodar os novos nomes.
. Defina os dois JButtons para terem o mesmo tamanho selecionando-os, clicando com o botão direito do mouse em um deles e selecionando Mesmo Tamanho > Mesma Largura no menu pop-up.
[.feature]
--
image::images/08_same_size-small.png[role="left", link="images/08_same_size.png"]
--
Os componentes ``JButton`` serão exibidos no form e seus nós correspondentes serão exibidos na janela Navegador. O código dos componentes ``JButton`` também será adicionado ao arquivo de código-fonte do form, que é visível na view Código-fonte do Editor. Todos os JButtons serão definidos com o mesmo tamanho do botão que possuir o maior nome.
. Pressione Ctrl-S para salvar o arquivo.
A última coisa que precisamos fazer é deletar o texto do espaço reservado nos vários componentes. Observe que, embora a remoção do texto do placeholder após a configuração preliminar de um form possa ser uma técnica útil para evitar problemas de alinhamento e relações de ancoragem dos componentes, a maioria dos desenvolvedores geralmente remove esse texto no processo de layout de seus forms. À medida que percorre o form, selecione e delete o texto do espaço reservado de cada um dos JTextFields. Deixaremos os itens de placeholder no JComboBox e no JList para um tutorial posterior.
== Visualizando a GUI
Agora que você criou com êxito a GUI ContactEditor, é possível experimentar a interface para ver os resultados. É possível visualizar o form à medida que trabalha clicando no botão Visualizar Form (image::images/test_form.png[]) na barra de ferramentas do GUI Builder. O form será aberto em sua própria janela, permitindo que você o teste antes da construção e execução.
[.feature]
--
image::images/08_preview_gui-small.png[role="left", link="images/08_preview_gui.png"]
--
== Implantando Aplicações GUI
Para que as interfaces criadas com o GUI Builder funcionem fora do IDE, a aplicação deve ser compilada nas classes do gerenciador de layout GroupLayout e essas classes também devem estar disponíveis no runtime. Essas classes são incluídas no Java SE 6, mas não no Java SE 5. Se você desenvolver a aplicação para ser executada no Java SE 5, sua aplicação precisa utilizar a biblioteca de extensões de layout Swing.
Se o IDE estiver sendo executado no JDK 5, o IDE gerará o código da aplicação automaticamente para utilizar a biblioteca de extensões de layout Swing. Quando você implanta a aplicação, é necessário incluir a biblioteca de extensões de layout Swing. Quando você constrói a aplicação (Construir > Construir Projeto Principal), o IDE fornece automaticamente uma cópia do arquivo JAR da biblioteca na pasta ``dist/lib`` da aplicação. O IDE também adiciona todos os arquivos JAR da pasta ``dist`` no elemento ``Class-Path`` no arquivo ``manifest.mf`` do arquivo JAR da aplicação.
Se você estiver executando o IDE no JDK 6, o IDE gera o código de sua aplicação para utilizar as classes GroupLayout que estão no Java SE 6. Isso significa que é possível implantar a aplicação para ser executada em sistemas com o Java SE 6 instalado e não é necessário encapsular sua aplicação com a biblioteca de extensões de layout Swing.
*Observação: * se a aplicação for criada com o JDK 6, mas você precisar que também seja executada no Java SE 5, poderá fazer com que o IDE gere seu código para utilizar a biblioteca de extensões de layout Swing em vez das classes no Java SE 6. Abra a classe ContactEditorUI no Editor de GUI. No Navegador, clique com o botão direito do mouse no Form ContactEditorUI e escolha Propriedades no menu pop-up. Na caixa de diálogo Propriedades, altere o valor da propriedade Estilo de Geração de Layout para Biblioteca de Extensões de Layout Swing.
=== Distribuindo e Executando Aplicações GUI Standalone
Para preparar a aplicação de GUI para distribuição fora do IDE:
* Compacte a pasta ``dist`` do projeto em um arquivo compactado ZIP. (A pasta ``dist`` também pode conter uma pasta ``lib`` , que também poderia necessitar ser incluída).
Para executar sua aplicação, clique com o botão direito do mouse no nome do projeto e selecione Executar a partir do menu de contexto. Na caixa de diálogo Executar Projeto, selecione a classe principal ( ``my.contacteditor.ContactEditorUI`` , se estiver falando sobre o projeto que você acabou de criar) e clique em OK. Sua aplicação está ativa e em execução.
Para executar uma aplicação GUI standalone na linha de comandos:
1. Navegue até a pasta ``dist`` do projeto.
2. Digite o seguinte:
[source,java]
----
java -jar <nome do jar>.jar
----
*Observação:* se você encontrar este erro:
[source,bash]
----
Exception in thread "main" java.lang.NoClassDefFoundError: org/jdesktop/layout/GroupLayout$Group
----
Verifique se o arquivo ``manifest.mf`` faz referência à versão atualmente instalada da Biblioteca de extensões de Layout Swing.
link:/about/contact_form.html?to=3&subject=Feedback:%20Designing%20a%20Swing%20GUI%20in%20NetBeans%20IDE[+Enviar Feedback neste Tutorial+]
== Consulte Também
Agora você concluiu o tutorial Criando uma GUI Swing. Para obter informações sobre como adicionar funcionalidade às GUIs que você cria, consulte:
* link:gui-functionality.html[+Introdução à Construção de GUIs+]
* link:gui-image-display.html[+Manipulando Imagens em uma Aplicação da GUI+]
* link:http://wiki.netbeans.org/wiki/view/NetBeansUserFAQ#section-NetBeansUserFAQ-GUIEditorMatisse[+ FAQ do GUI Builder+]
* link:../../trails/matisse.html[+Trilha de Aprendizado das Aplicações de GUI do Java+]
* link:http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG920[+Implementando GUIs de Java+] em _Desenvolvendo Aplicações com o NetBeans IDE_