<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--
Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved.
-->

<html>

    <head>
        <title>Introdução à Construção de GUI - Tutorial do NetBeans IDE</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
        <meta name="KEYWORDS" content="NETBEANS, TUTORIAL, GUIDE, USER, DOCUMENTATION">
        <meta name="description" content="Adding Functionality to Buttons with the NetBeans GUI Builder: This tutorial teaches you how to build a simple GUI with back-end functionality. This tutorial is geared to the beginner and introduces the basic construction of a GUI with functionality. We will work through the layout and design of a GUI and add a few Buttons and Text Boxes. The Text Boxes will be used for receiving user input and also for displaying the program output. The Button will initiate the functionality built into the front end.">
        <link rel="stylesheet" href="../../../netbeans.css">
        <meta name="author" content="Saleem Gul, Tomas Pavek">
    </head>

    <body>
        <h1>Introdução à Construção de GUIs</h1>


        <div class="articledate" style="margin-left: 0px;">Contribuição de Saleem Gul e Tomas Pavek</div>

        <p>Este tutorial de iniciante ensina como criar uma interface de usuário gráfica simples e adicionar funcionalidade de back-end simples. Em particular, mostraremos como codificar o comportamento dos botões e dos campos em um form de Swing.
        </p>

        <p>Nós iremos trabalhar no layout e design de uma GUI e adicionar alguns botões e campos de texto. Os campos de texto serão usados para receber entrada do usuário e também para exibir a saída do programa. O botão iniciará a funcionalidade interna do front-end. A aplicação que criamos será uma calculadora simples mas funcional.
        </p>

        <p>Para uma guia mais abrangente das funcionalidades de design do GUI Builder, incluindo demonstrações em vídeo das várias funcionalidades de design, consulte <a href="quickstart-gui.html">Projetando uma GUI Swing no NetBeans IDE</a>.</p>

        <p align="center"><b>Duração esperada: 20 minutos</b></p>

        <div class="indent">
            <h3>Conteúdo</h3>
            <img alt="O conteúdo desta página se aplica ao NetBeans IDE 6.9 e mais recente" class="stamp" src="../../../images_www/articles/73/netbeans-stamp-80-74-73.png" title="O conteúdo desta página se aplica ao NetBeans IDE 6.9 e mais recente">
            <ul class="toc">
                <li><a HREF="#Exercise_1">Exercício 1: Criando um Projeto</a></li>
                <li><a HREF="#Exercise_2">Exercício 2: Construindo o Front End</a></li>
                <li><a HREF="#Exercise_3">Exercício 3: Adicionando Funcionalidade</a></li>
                <li><a HREF="#Exercise_4">Exercício 4: Executando o Programa</a></li>
                <li><a HREF="#how">Como o Tratamento de Eventos Funciona</a></li>
                <li><a HREF="#seealso">Consulte Também</a></li>
            </ul>
            <p><b>Para concluir este tutorial, você precisa dos seguintes recursos e softwares.</b></p>

            <table>
                <tbody>
                    <tr>
                        <th class="tblheader" scope="col">Software ou Recurso</th>
                        <th class="tblheader" scope="col">Versão Necessária</th>
                    </tr>
                    <tr>
                        <td class="tbltd1"><a href="http://netbeans.org/downloads/">NetBeans IDE com Java SE</a></td>
                        <td class="tbltd1">versão 6.9 ou posterior</td>
                    </tr>
                    <tr>
                        <td class="tbltd1"><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">JDK (Java Development Kit)</a></td>
                        <td class="tbltd1">versão 6, 7 ou 8 </td>
                    </tr>
                </tbody>
            </table>
        </div>

        
        <h2><a name="Exercise_1"></a>Exercício 1: Criando um Projeto</h2>

        <p>A primeira etapa é criar um projeto do IDE para a aplicação que vamos desenvolver. Chamaremos nosso projeto de <tt>NumberAddition</tt>.</p>
        <ol>
            <li>Escolha <tt>Arquivo</tt> > <tt>Novo Projeto</tt>. Como alternativa, você pode clicar no ícone Novo Projeto na barra de ferramentas do IDE.</li>
            <li>No painel Categorias, selecione o nó Java. No painel Projetos, escolha Aplicação Java. Clique em Próximo. </li>
            <li>Digite <code>NumberAddition</code> no campo Nome do Projeto e especifique um caminho; por exemplo: em seu diretório home, como a localização do projeto. </li>
            <li>(Opcional) Marque a caixa de seleção Utilizar Pasta Dedicada para Armazenamento de Bibliotecas e especifique o local da pasta de bibliotecas. Consulte <a href="http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG455">Compartilhando uma Biblioteca com Outros Usuários</a> em <i>Desenvolvendo Aplicações com o NetBeans IDE</i> para obter mais informações.</li>
            <li>Desmarque a caixa de seleção Criar Classe Principal caso esteja selecionada. </li>
            <li>Clique em Finalizar.</li>
        </ol>


        <!-- ===================================================================================== -->

        <h2><a name="Exercise_2"></a>Exercício 2: Construindo o Front End</h2>

        <p>Para prosseguir com a construção da nossa interface, precisamos criar um contêiner Java no qual colocaremos os outros componentes requeridos da GUI. Nesta etapa criaremos um contêiner usando o componente <code>JFrame</code>. Colocaremos o contêiner em um novo pacote, que aparecerá no nó Pacotes de Códigos-fonte.</p>

        <div class="indent">
            <h3 class="tutorial">Crie um contêiner JFrame</h3>
            <ol>
                <li>Na janela Projetos, clique com o botão direito do mouse no nó <tt>NumberAddition</tt> e selecione <tt>Novo</tt> > <tt>Outro</tt>. </li>
				<li>Na caixa de diálogo Novo Arquivo, escolha a categoria <tt>Swing GUI Forms</tt> e o tipo de arquivo <tt>JFrame Form</tt>. Clique em Próximo.</li>
                <li>Insira <tt>NumberAdditionUI</tt> como o nome da classe.</li>
                <li>Indique <code>my.numberaddition</code> como o pacote. </li>
                <li>Clique em Finalizar.</li>
            </ol>

            <p>O IDE cria o form <code>NumberAdditionUI</code> e a classe <code>NumberAdditionUI</code> na aplicação <code>NumberAddition</code> e abre o form <code>NumberAdditionUI</code> no GUI Builder. O pacote <code>my.NumberAddition</code> substitui o pacote default.</p>

            <h3 class="tutorial">Adicionando componentes: Criando o Front End</h3>
            <p>Em seguida, usaremos a Paleta para preencher o front end da nossa aplicação com um JPanel. Em seguida, adicionaremos três JLabels, três JTextFields e três JButtons. Se você não usou o GUI Builder antes, pode achar úteis as informações no tutorial <a href="quickstart-gui.html">Projetando uma GUI Swing no NetBeans IDE</a> sobre posicionamento de componentes.</p>
            <p>Depois de terminar de arrastar e posicionar os componentes mencionados anteriormente, o JFrame deve ter uma aparência como o da tela seguinte. </p>

			<p class="align-center"><img alt="JFrame com 3 JLabels, 3 JButtons e 3 JTextFields" class="margin-around" src="../../../images_www/articles/72/java/gui-functionality/Figure1.png"></p>

            <p>Caso não veja a janela Paleta no canto superior direito do IDE, escolha Janela > Paleta.</p>
            <ol>
                <li>Comece selecionando um Painel da categoria Contêineres Swing na Paleta e solte-o no JFrame.</li>
                <li>Enquanto o JPanel estiver realçado, vá para a janela Propriedades e clique no botão de reticências (...) ao lado da borda para escolher um estilo de borda.</li>
                <li>Na caixa de diálogo Borda, selecione TitledBorder na lista, e digite <code>Adição de Número</code> no campo Título. Clique em OK para salvar as alterações de e saia da caixa de diálogo.</li>
                <li>Você agora deve ver um JFrame intitulado vazio que diz Adição de Número como na tela. Observe a tela e os três JLabels, três JTextFields e três JButtons como você vê acima.</li>
            </ol>

            <h3 class="tutorial">Renomeando os Componentes</h3>
            <p>Nesta etapa, vamos renomear o texto de exibição dos componentes que acabamos de adicionar ao JFrame.</p>
            <ol>
                <li>Clique duas vezes em <code>jLabel1</code> e altere a propriedade do texto para  <code>Primeiro Número</code></li>
                <li>Clique duas vezes em <code>jLabel2</code> e altere o texto para <code>Segundo Número</code></li>
                <li>Clique duas vezes em <code>jLabel3</code> e altere o texto para <code>Resultado</code> </li>
                <li>Delete o texto da amostra de <code>jTextField1</code>. Você pode tornar o texto editável ao clicar com o botão direito do mouse no campo de texto e escolher Editar Texto no menu suspenso. Talvez você tenha que redimensionar o <code>jTextField1</code> para seu tamanho original. Repita esta etapa para <code>jTextField2</code> e <code>jTextField3</code>. </li>
                <li> Renomeie o texto de exibição de <code>jButton1</code> para <code>Limpar</code>. (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.) </li>
                <li> Renomeie o texto de exibição de <code>jButton2</code> para <code>Adicionar</code>.</li>
                <li> Renomeie o texto de exibição de <code>jButton3</code> para <code>Sair</code>.</li>
            </ol>
            <p>Sua GUI finalizada agora deve ser semelhante à tela seguinte:</p>
            <p class="align-center"><img alt="a aplicação concluída" class="margin-around" src="../../../images_www/articles/72/java/gui-functionality/Figure2.png"></p>


        </div>


        <!-- ======================================================================================= -->

        <h2><a name="Exercise_3"></a>Exercício 3: Adicionando Funcionalidade</h2>

        <p>Neste exercício, vamos dar funcionalidade aos botões Adicionar, Limpar e Sair. As caixas <code>jTextField1</code> e <code>jTextField2</code> serão usadas para entrada do usuário e <code>jTextField3</code> para a saída do programa - o que estamos criando é uma calculadora muito simples. Vamos começar.</p>

        <div class="indent">
            <h3 class="tutorial">Fazendo o Botão Sair Funcionar</h3>

            <p>Para dar função aos botões, temos que designar um handler de eventos a cada um deles para responder aos eventos. Em nosso caso, queremos saber quando o botão é pressionado, por clique do mouse ou por meio do teclado. Portanto, usaremos ActionListener respondendo a ActionEvent. <!--TODO clarify here--></p>

            <ol>
                <li>Clique com o botão direito do mouse no botão Sair. No menu suspenso, escolha Eventos > Ação> actionPerformed. Observe que o menu contém muito mais eventos aos quais você pode responder! Quando você selecionar o evento <tt>actionPerformed</tt>, o IDE adicionará automaticamente um ActionListener ao botão Sair e gerará um método de handler para o método actionPerformed do listener. </li>
                <li>O IDE abrirá a janela Código-fonte e rolará para onde você implementa a ação que deseja que o botão faça quando for pressionado (pelo clique do mouse ou por meio do teclado). Sua janela Código-fonte deve conter as seguintes linhas:
                    <pre class="examplecode">private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
    //TODO add your handling code here:
                }</pre></li>
                <li>Agora vamos adicionar o código da ação que desejamos que o botão Sair execute. Substitua a linha TODO por <code>System.exit(0);</code>. Seu código do botão Sair finalizado deve ter a seguinte aparência:

                  <pre class="examplecode">private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
    System.exit(0);
                } </pre>
				</li>
            </ol>

            <h3 class="tutorial">Fazendo o Botão Limpar Funcionar</h3>
            <ol>
                <li>Clique na guia Design na parte superior da sua área de trabalho para voltar para o Design do Form.</li>
                <li>Clique com o botão direito do mouse no botão Limpar (<code>jButton1</code>). No menu pop-up, escolha Eventos > Ação > actionPerformed.</li>

                <li>Agora faremos o botão Limpar apagar todo o texto dos jTextFields. Para fazer isso, adicionaremos algum código como acima. Seu código-fonte finalizado deve ter a seguinte aparência: 
                <pre class="examplecode">private void jButton1ActionPerformed(java.awt.event.ActionEvent evt){
    jTextField1.setText(&quot;&quot;);
    jTextField2.setText(&quot;&quot;);
    jTextField3.setText(&quot;&quot;);
                }</pre>
			</li>
            </ol>
			
            <p>O código acima quase não altera o texto em todos os nossos três JTextFields, basicamente está sobrescrevendo o Texto existente por um espaço em branco.</p>

            <h3 class="tutorial">Fazendo o Botão Adicionar Funcionar</h3>
            <p>O botão Adicionar realizará três ações. </p>
            <ol><li>Ele vai aceitar a entrada do usuário de <code>jTextField1</code> e <code>jTextField2</code> e converter a entrada de um tipo String para uma flutuação. </li>
            <li>Ele irá então executar a adição dos dois números.</li>
                <li>E, finalmente, ele converterá a soma para um tipo string e irá colocá-lo no <code>TextField3</code>.</li>
            </ol>
            Vamos começar!

            <ol>
                <li>Clique na guia Design na parte superior da sua área de trabalho para voltar para o Design do Form.</li>
                <li>Clique com o botão direito do mouse no botão Adicionar (<code>jButton2</code>). No menu pop-up, escolha Eventos > Ação> actionPerformed.</li>
                <li>Agora vamos adicionar algum código para fazer nosso botão Adicionar funcionar. O código-fonte finalizado terá a seguinte aparência:
                    <pre class="examplecode">private void jButton2ActionPerformed(java.awt.event.ActionEvent evt){
    // First we define float variables.
    float num1, num2, result;
    // We have to parse the text to a type float.
    num1 = Float.parseFloat(jTextField1.getText());
    num2 = Float.parseFloat(jTextField2.getText());
   // Now we can perform the addition.
    result = num1+num2;
    // We will now pass the value of result to jTextField3.
    // At the same time, we are going to
    // change the value of result from a float to a string.
    jTextField3.setText(String.valueOf(result));
                    }</pre>
                </li>
            </ol>

            <p>Agora nosso programa está completo e podemos construí-lo e executá-lo para vê-lo em ação. </p>
        </div>


        <h2><a name="Exercise_4"></a>Exercício 4: Executando o Programa</h2>

        <p><b>Para executar o programa no IDE:</b></p>

        <ol>
            <li>Escolha Executar > Executar Projeto Principal (se preferir, pressione F6).
            <p class="notes"><b>Observação:</b>Se aparecer uma entrada informando que o Project NumberAddition não possui uma classe principal definida, então você deve selecionar <tt>my.NumberAddition.NumberAdditionUI</tt> como a classe principal na mesma janela e clicar no botão OK.</p></li>
            
        </ol>

        <p><b>Para executar o programa fora do IDE:</b></p>
        <ol>
            <li>Escolha Executar > Limpar e Construir Projeto Principal (Shift-F11) para construir o arquivo JAR da aplicação.</li>
            <li>Usando o explorador de arquivos ou o gerenciador de arquivos de seu sistema, navegue até o diretório <code>NumberAddition/dist</code>.
			<p class="notes"><b>Observação:</b> a localização do diretório do projeto <tt>NumberAddition</tt> depende o caminho que você especificou ao criar o projeto na etapa 3 da seção <a href="#Exercise_1">Exercício 1: Criando um Projeto</a>.</p>
            </li>
            <li>Clique duas vezes no arquivo <code>NumberAddition.jar</code>.</li>
        </ol>
        <p>Depois de alguns segundos, a aplicação deve ser iniciada.</p>
        <p class="notes"><b>Observação:</b> Se clicar duas vezes no arquivo JAR e a aplicação não for iniciada, consulte <a href="../../articles/javase-deploy.html#troubleshooting">este artigo</a> para obter informações sobre a definição de associações do arquivo JAR em seu sistema operacional.</p>

        <p>Você também pode iniciar a aplicação da linha de comandos.</p>
        <p><b>Para iniciar a aplicação partir da linha de comandos:</b></p>
        <ol>
            <li>em seu sistema, abra um prompt de comando ou uma janela de terminal.</li>
            <li>No prompt de comando, altere os diretórios para o diretório <code>NumberAddition/dist</code>.</li>
            <li>Na linha de comandos, digite a seguinte instrução:
            <pre class="examplecode">java -jar  NumberAddition.jar</pre>
			<p class="notes"><b>Observação:</b> Certifique-se de <tt>my.numberaddition.numberadditionui</tt> é definido como a classe principal antes de executar a aplicação. É possível verificar isso clicando com o botão direito no nó do projeto numberaddition no painel projetos, escolhendo Propriedades no menu pop-up, e selecionando Executar categoria na caixa de diálogo Propriedades do Projeto. O campo Classe Principal deve exibir <tt>my.numberaddition.numberadditionui</tt>. </p>
            </li>
        </ol>

        <h2><a name="how"></a>Como o Tratamento de Eventos Funciona</h2>

        <p>Este tutorial mostrou como responder a um simples evento de botão. Existe muito mais eventos aos quais você pode fazer sua aplicação responder. O IDE pode ajudá-lo a encontrar a lista de eventos disponíveis que os componentes de GUI podem manipular:</p>
        <ol>
            <li>Volte para o arquivo <code>NumberAdditionUI.java</code> no Editor. Clique na guia Design para ver o layout da GUI no GUI Builder.</li>
            <li>Clique com o botão direito do mouse em qualquer componente de GUI, e selecione Eventos no menu pop-up. Por enquanto, apenas explore o menu para ver o que há nele, você não precisa selecionar nada.</li>
            <li>Como alternativa, você pode selecionar Propriedades no menu Janela. Na janela Propriedades, clique na guia Eventos. Na guia Eventos, você pode exibir e editar os handlers de eventos associados ao componente de GUI ativos no momento.</li>
            <li>Você pode fazer sua aplicação responder a pressionamentos de tecla, cliques únicos, duplos e triplos do mouse, movimentação do mouse, alterações do tamanho e do foco da janela. Você pode gerar handlers de eventos para todos eles no menu Eventos. O evento mais comum usará um evento Ação. (Aprenda <a href="http://java.sun.com/docs/books/tutorial/uiswing/events/generalrules.html#twokinds">melhores práticas para Tratamento de eventos</a> no <a href="http://java.sun.com/docs/books/tutorial/uiswing/events/index.html">Tutorial de Eventos Java </a> da Sun.)</li>
        </ol>

        <p>Como o tratamento de eventos funciona? Cada vez que você seleciona um evento no menu Evento, o IDE automaticamente cria um listener de evento por você e o incorpora em seu componente. Percorra as etapas seguintes para ver como o tratamento de eventos funciona.</p>

        <ol>
            <li>Volte para o arquivo <code>NumberAdditionUI.java</code> no Editor. Clique na guia Código-fonte para ver o código-fonte da GUI.</li>
            <li>Role para baixo e observe os métodos <code>jButton1ActionPerformed()</code>, <code>jButton2ActionPerformed()</code> e <code>jButton3ActionPerformed()</code> que acabou de implementar. Esses métodos são chamados de handlers de eventos.</li>
            <li>Agora role para um método chamado <code>initComponents()</code>. Se você não vir esse método, procure por uma linha que diz<code>Generated Code</code>; clique no sinal + ao lado dela para expandir o método <code>initComponents()</code> contraído.</li>
            <li>Primeiro, observe o bloco azul ao lado do método <code>initComponents()</code>. Esse código foi gerado automaticamente pelo IDE e você não pode editá-lo.</li>
            <li>Agora, explore o método <code>initComponents()</code>. Entre outras coisas, ele contém o código que inicializa e coloca seus componentes de GUI no form. Esse código é gerado e atualizado automaticamente enquanto você coloca e edita componentes na view Design.</li>
            <li>Em <code>initComponents()</code>, role para baixo onde diz
                <pre class="examplecode">jButton3.setText(&quot;Exit&quot;);
jButton3.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent evt) {
           jButton3ActionPerformed(evt);
    }
            });</pre> 

            <p>Esse é o local em que um objeto de listener de evento é adicionado ao componente de GUI; nesse caso, você registra um ActionListener ao <code>jButton3</code>. A interface ActionListener possui um método actionPerformed usando o objeto ActionEvent que é implementado simplesmente pela chamada do handler de eventos <code>jButton3ActionPerformed</code>. O botão agora está fazendo listening dos eventos de ação. Toda vez que é pressionado, um ActionEvent é gerado e passado para o método actionPerformed do listener que por sua vez executa o código que você forneceu no handler de eventos desse evento.</p></li>
        </ol>
        <p>
            Generalizando, para poder responder, cada componente de GUI interativo precisa registrar um listener de evento e precisa implementar um handler de eventos. Como você pode ver, o NetBeans IDE manipula a anexação do listener de evento; portanto, você pode se concentrar na implementação da lógica comercial real que deve ser adicionada pelo evento.
        </p>
        <!--TODO: Add Swing App framework info, links-->

        <div class="feedback-box">
            <a href="/about/contact_form.html?to=3&amp;subject=Feedback:%20Introduction%20to%20GUI%20Building">Enviar Feedback neste Tutorial</a>
        </div>
        <br style="clear:both;">
        <h2><a name="seealso"></a>Consulte Também</h2>
        <ul>
            <li><a href="http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG920">Implementando GUIs de Java</a> em <i>Desenvolvendo Aplicações com o NetBeans IDE</i></li>
			<li><a href="quickstart-gui.html">Projetando uma GUI Swing no NetBeans IDE</a></li>
            <li><a href="gui-image-display.html">Tratando imagens em uma Aplicação da GUI</a></li>
            <li><a href="hibernate-java-se.html">Usando Hibernate em uma Aplicação Java Swing</a></li>
            <li><a href="../../trails/matisse.html">Trilha de Aprendizado das Aplicações de GUI do Java</a></li>
            <li><a href="../../trails/java-se.html">Trilha de Aprendizado do Desenvolvimento Geral em Java</a></li>
            <li><a href="http://wiki.netbeans.org/wiki/view/NetBeansUserFAQ#section-NetBeansUserFAQ-GUIEditorMatisse" target="_blank">GUI Builder - Perguntas Frequentes</a></li>
            <li><a href="http://download.oracle.com/javase/tutorial/uiswing/events/index.html" target="_blank">Lição: Gravando Listeners de Evento</a> do <a href="http://download.oracle.com/javase/tutorial/index.html" target="_blank">The Java(tm) Tutorials</a>.</li>
           
        </ul>

</body>

</html>
