// 
//     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.
//

= Criando um Form Java Básico usando o GridBag Customizer
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Criando um Form Java Básico usando o GridBag Customizer - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Criando um Form Java Básico usando o GridBag Customizer

Escrito por Jan Stola, Tomas Pavek e Alyona Stashkova

Este tutorial é a primeira série de duas partes que demonstra como criar um form Java simples usando as funcionalidades básicas do GridBag Customizer do NetBeans IDE.
Esta série tem a intenção de ser um guia para mostrar como é possível criar o layout de seus componentes da GUI sem escrever manualmente seu código de layout e, a seguir, executar alterações adicionais em um form existente para implementar um layout alvo específico que seja necessário ao seu projeto.

Cada documento nesta série aborda conjuntos específicos de funcionalidades.

* Parte 1: Criando um Form Java Básico usando o GridBag Customizer
* Parte 2: link:../java/gbcustomizer-advanced.html[+Criando um Form Java Avançado usando o GridBag Customizer+]


image::images/netbeans-stamp-80-74.png[title="O conteúdo desta página se aplica ao NetBeans IDE 7.1 e à versão mais recente"]


*Para acompanhar este tutorial, são necessários os recursos e softwares listados abaixo.*

|===
|Software ou Recurso |Versão Necessária 

|link:http://netbeans.org/downloads/index.html[+NetBeans IDE+] |7.1 e posterior 

|link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+JDK (Java Development Kit)+] |Versão 6, 7 ou 8 

|link:https://netbeans.org/projects/samples/downloads/download/Samples%252FJava%252Fgbcustomizer-basic-tutorial.zip[+gbcustomizer-basic-tutorial.zip+] |Um arquivo compactado com o projeto de demonstração contendo os layouts inicial e de destino do tutorial. 
|===

*Observações:*

* Você pode fazer download do projeto que é usado como um ponto inicial para esta série como um arquivo compactado  ``.zip`` .
* Este tutorial concentra-se na criação do layout somente para o contêiner. A adição de funcionalidade na GUI está fora de seu escopo.


== Abrindo o Projeto de Exemplo

1. Faça download e descompacte o projeto link:https://netbeans.org/projects/samples/downloads/download/Samples%252FJava%252Fgbcustomizer-basic-tutorial.zip[+gbcustomizer-basic-tutorial.zip+] em qualquer lugar no computador.
2. Na guia Projetos, selecione  ``Arquivo``  >  ``Abrir Projeto`` , navegue para o projeto  ``gbcustomizer-basic-tutorial``  que você extraiu na etapa anterior e clique em Abrir Projeto. A pasta do projeto pode estar contida em uma pasta também chamada  ``gbcustomizer-basic-tutorial`` .
3. Na caixa de diálogo Problema de Referência, clique em Resolver. O IDE faz download automaticamente das bibliotecas JUnit e JUnit4. Siga as instruções do instalador do NetBeans IDE para instalar os plug-ins necessários. Quando a instalação for concluída, clique em Finalizar.
4. Expanda  ``Pacotes de Código-fonte``  >  ``Tutorial``  e clique duas vezes em  ``ContactsAdvancedInitial.java`` . 
O form de exemplo é aberto na view Design do GUI Builder.

[.feature]
--
image::images/sampleform-small.png[role="left", link="images/sampleform.png"]
--


== Visão Geral do GridBag Customizer

O GridBag Layout Customizer é um dos gerenciadores de layout mais flexível e complexo que a plataforma Java fornece. O Personalizador coloca os componentes em uma grade de linhas e colunas, permitindo que componentes especificados se expandam para múltiplas linhas ou colunas. Nem todas as linhas precisam necessariamente ter a mesma altura. De forma similar, nem todas as colunas precisam necessariamente ter a mesma largura. Essencialmente, o GridBagLayout coloca os componentes em retângulos (células) em uma grade e, a seguir, usa os tamanhos preferenciais dos componentes para determinar o tamanho das células.

Para exibir o GridBag Customizer, siga as etapas abaixo:

1. Na view Design, selecione o form JFrame.
2. Clique com o botão direito do mouse no form e escolha  ``Personalizar Layout``  a partir do menu de contexto.
A caixa de diálogo Personalizar Layout é aberta, conforme mostrado abaixo.

[.feature]
--
image::images/customizerdialog-small.png[role="left", link="images/customizerdialog.png"]
--

*Observação:* neste tutorial, o GridBagLayout já está definido. Caso você trabalhe com outro form, na etapa 2 acima, clique com o botão direito do mouse no form e escolha  ``Definir Layout``  >  ``Layout do Grid Bag``  no menu de contexto (isso ativa o item de menu  ``Personalizar Layout`` ). A seguir, conclua o procedimento.


=== Área da Grade

A Área da grade está no lado direito da caixa de diálogo Personalizar Layout. Ela mostra o layout da grade dos componentes.
Os componentes no form de amostra já estão adicionados, mas não estão dispostos corretamente.


=== Barra de Ferramentas

Uma barra de ferramentas com cinco botões está localizada acima da Área da grade. Ela fornece acesso conveniente para comandos comuns, como desfazer, refazer, ativar intervalos uniformes, ocultar linhas e colunas vazias e testar o layout.

image::images/toolbar.png[]


=== Personalizador de Propriedades

O Personalizador de Propriedades está posicionado no canto superior esquerdo da caixa de diálogo Personalizar Layout. Ele permite modificar com facilidade as restrições mais comuns de layout, como  ``Ancorar``  e  ``Insets`` .

image::images/propcustomizer.png[]


=== Folha de Propriedades

A Folha de Propriedades está localizada abaixo do Personalizador de Propriedades. Ela exibe as restrições do layout dos componentes selecionados.

image::images/propsheet.png[]


== Criando o Layout de Componentes

Os componentes do form  ``ContactsBasicInitial``  são adicionados e dispostos em uma única linha. O GridBagLayout dispõe os componentes desta forma quando nenhuma restrição de layout for especificada.


=== Movendo

Você pode mover os componentes usando um simples arrastar e soltar, como desejado. O componente é realçado em verde quando for selecionado. Enquanto você arrasta um componente, as propriedades de  ``Grade X``  e  ``Grade Y``  alteram-se para refletir a nova posição. Novas colunas e linhas são automaticamente criadas quando necessário.

Para criar um layout como o mostrado na figura abaixo, mova os componentes da coluna 2 para a 11, como segue:

1. Arraste o label  ``Sobrenome:``  e o campo de texto adjacente para a primeira das duas células da segunda linha.
2. Arraste o label  ``Rua:`` , o campo de texto adjacente e o botão  ``Procurar``  adjacente para a primeira das três células da terceira linha.
3. Arraste o label  ``Cidade:`` , o campo de texto adjacente e o botão  ``Procurar``  adjacente para a primeira das três células da quarta linha.
4. Arraste o label  ``Estado:``  e a caixa de combinação adjacente para a primeira das duas células da quinta linha.

Os componentes estão agora colocados de acordo com o layout alvo.

[.feature]
--
image::images/layout1-small.png[role="left", link="images/layout1.png"]
--

*Observação:* Quando um componente for movido para as células alvo, ele será realçado em verde.


=== Redimensionando

Um componente pode ser redimensionado arrastando-se as alças de redimensionamento quadradas que aparece em torno de seu perímetro quando ele é selecionado.

Para redimensionar os campos de texto  ``Nome:``  e  ``Sobrenome:``  e fazer com que ocupem duas células adjacentes, complete as etapas abaixo:

1. Pressione Ctrl+Clique nos dois componentes JTextField para selecioná-los.
2. Com ambos os JTextFields selecionados, posicione o cursor sobre a borda direita da células, clique e arraste até que a linha guia laranja realçada envolva as células adjacentes na coluna 2 na direita.
3. Solte o cursor para redimensionar os componentes.

Os campos de texto  ``Nome:``  e  ``Sobrenome:``  são redimensionados para se estender entre as duas células, como mostrado na ilustração a seguir. As células ocupadas são realçadas.

[.feature]
--
image::images/tfieldsresized-small.png[role="left", link="images/tfieldsresized.png"]
--


=== Especificando a Restrição de Preenchimento do Layout

Apesar dos campos de texto  ``Nome:``  e  ``Sobrenome:``  ocuparem duas células, eles têm o tamanho preferencial e são colocados no meio da área de exibição. Antes de continuar, precisamos preencher toda a área de células usando a restrição de layout  ``Preencher`` .

Para tornar os campos de texto largos o suficiente para preencher suas áreas horizontalmente sem alterar suas alturas, na caixa de combinação  ``Preencher``  na área Folha de propriedades, selecione  ``Horizontal`` .

[.feature]
--
image::images/horizontalset-small.png[role="left", link="images/horizontalset.png"]
--


=== Visualizando

Agora que você completou com êxito o layout do form  ``ContactsBasicInitial`` , pode testar sua interface para ver os resultados. É possível exibir o form à medida que trabalha clicando no botão Testar Layout (image::images/testbutton.png[]) na barra de ferramentas do Personalizador. O form será aberto em sua própria janela, permitindo que você o teste antes da construção e execução.

image::images/designpreview.png[]

A visualização é útil para testar o comportamento dinâmico do layout, ou seja, como o layout se comporta quando o contêiner desenhado é redimensionado.


=== Especificando as Restrições da Espessura X e Y

A especificação de espessuras tem um impacto significativo na aparência dos componentes do GridBagLayout. As espessuras são usadas para determinar como distribuir o espaço entre colunas (peso X) e entre linhas (peso Y). Isso é importante para especificar o comportamento do redimensionamento.
Normalmente os pesos são especificados como 0.0 e 1.0 com os extremos. Os números entre eles são usados conforme necessário. Números maiores indicam que a linha ou coluna do componente deveria ter mais espaço.

Se você tentar redimensionar na horizontal o contêiner exibido, poderá ver que os componentes do layout permanecem com o mesmo tamanho e permanecem acumulados no meio do contêiner. Até os campos  ``Nome:``  e  ``Sobrenome`` , que têm a restrição Preencher definida como Horizontal, não crescem, porque a restrição Preencher se refere à área interna da célula e não ao tamanho dela. Em outras palavras, um componente com o atributo Preencher definido para um valor diferente de  ``none``  alega que *"pode"* crescer, mas não alega que *"deseja"* crescer. 
As restrições de layout de Espessura X e Espessura Y determinam se um componente *"deseja"* crescer nas direções horizontal e vertical. 
Quando dois componentes em uma linha (ou coluna) têm uma restrição de valor não zero de Espessura X (ou Espessura Y), os valores determinam como o componente individual cresce. Por exemplo, se os valores forem 0.6 e 0.4, então o primeiro componente obtém 60% do espaço disponível e o segundo componente obtém 40%.

Para fazer com que o contêiner desenhado seja corretamente redimensionado, faça o seguinte:

1. Selecione o campo de texto à direita do label  ``Nome:``  na Área de grade do GridBag Customizer.
2. Digite  ``1.0``  no campo de valor de restrição de layout,  ``Espessura X`` , e pressione Enter.
3. Selecione o campo de texto à direita do label  ``Sobrenome``  na Área de Grade do GridBag Customizer.
4. Digite  ``1.0``  no campo de valor de restrição de layout,  ``Espessura X`` , e pressione Enter.
5. Selecione o campo de texto à direita do label  ``Rua``  na Área de Grade do GridBag Customizer.
6. Selecione  ``Horizontal``  na caixa de combinação  ``Preencher``  e pressione Enter.
7. Digite  ``1.0``  no campo de valor de restrição de layout,  ``Espessura X`` , e pressione Enter.
8. Selecione o campo de texto à direita do label  ``Rua``  na Área de Grade do GridBag Customizer.
9. Selecione  ``Horizontal``  na caixa de combinação  ``Preencher``  e pressione Enter.
10. Digite  ``1.0``  no campo de valor de restrição de layout,  ``Espessura X`` , e pressione Enter.

Para verificar se o contêiner desenhado é corretamente redimensionado na direção horizontal, clique no botão Testar Layout (image::images/testbutton.png[]) na barra de ferramentas do Personalizador e arraste as bordas do form  ``ContactsBasicInitial`` .

image::images/resizedpreview.png[]


=== Ancorando

A ancoragem é usada quando o componente for menor do que sua área de exibição para determinar onde (dentro da área) colocar o componente.

Durante o redimensionamento horizontal do form  ``ContactsBasicInitial``  na seção anterior, você provavelmente observou que a caixa de combinação  ``Estado``  se move para longe do label  ``Estado`` . Como o tamanho preferencial da caixa combo é menor do que o tamanho da célula correspondentes, o GridBagLayout coloca o componente no centro da célula por default.

Para mudar este comportamento, especifique as restrições do layout  ``Âncora``  como segue:

1. Selecione a caixa de combinação à direita do label de  ``Estado``  e clique no botão de seta (image::images/arrowbutton.png[]) à direita da caixa de combinação de  ``Âncora``  na <<01d,Folha de Propriedades>> do Customizer.
2. Escolha  ``Início da Linha``  na lista drop-down.

A caixa de combinação  ``Estado``  é ancorada no lado esquerdo do form quando a anterior é agora redimensionada na horizontal.

[.feature]
--
image::images/comboanchored-small.png[role="left", link="images/comboanchored.png"]
--

Para fazer com os labels se alinhem na esquerda ao invés de no centro, como estão no momento, complete as etapas abaixo:

1. Selecione os labels  ``Nome:`` ,  ``Sobrenome:`` ,  ``Rua`` ,  ``Cidade``  e  ``Estado`` .

*Observação:* Você pode selecionar vários componentes ao pressionar o botão esquerdo do mouse no primeiro componente, mantê-lo pressionado e arrastá-lo para o último componente, como se estivesse desenhando um retângulo que incorpora todos os labels. Após você soltar o botão do mouse, todos os cinco componentes são realçados com bordas laranja e um plano de fundo verde, como mostrado abaixo.

image::images/multiselect.png[]



. Altere a restrição do layout  ``Âncora``  dos labels para  ``Início da Linha`` .
Os labels são ancorados na esquerda.

image::images/linestartanchor.png[]


=== Espaçamento

Por default, cada componente não tem preenchimento externo. A restrição  ``Inset``  especifica o preenchimento externo do componente - a quantidade mínima de espaço entre o componente e as bordas de sua área de exibição.

No layout atual, os componentes são colocados pertos uns dos outros. Para separá-los, faça o seguinte:

1. Pressione Ctrl+Clique para selecionar todos os componentes.
2. Pressione o botão na direita do campo de texto restrição Insets.
3. Na caixa de diálogo exibida, altere os valores  ``Superior:``  e  ``Esquerad:``  para  ``5``  e clique em OK.

image::images/insets.png[]

Seu form deverá ter a aparência de um do arquivo  ``ContactsBasicFinal.java``  se você abri-lo.

[.feature]
--
image::images/contactsbasicfinal-small.png[role="left", link="images/contactsbasicfinal.png"]
--


== Resumo

Neste curto tutorial você desenhou um form simples. Ao editar o layout, você aprendeu como usar as funcionalidades básicas do GridBag Customizer.
Você agora pode ir para a segunda parte de um tutorial em duas partes, onde modificará o form  ``ContactsAdvancedInitial``  para se familiarizar com as funcionalidades avançadas do GridBag Customizer.

Siga para link:../java/gbcustomizer-advanced.html[+Criando um Form Java Avançado usando o GridBag Customizer+]

<<top,início>>

link:/about/contact_form.html?to=3&subject=Feedback:%20Designing%20a%20Basic%20Java%20Form%20Using%20the%20GridBag%20Customizer[+Enviar Feedback neste Tutorial+]



== Consulte Também

Você agora completou o tutorial Criando um Form Java Básico usando o GridBag Customizer. 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/NetBeansUserFAQ#GUI_Editor_.28Matisse.29[+ 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_

<<top,início>>

