<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<!--
Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
-->

<html>
<head>`
   <title>Guia de in&iacute;cio r&aacute;pido do desenvolvimento de MIDP em Java ME - Tutorial do NetBeans IDE</title>
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
   <link rel="stylesheet" type="text/css" href="../../../netbeans.css">
   <meta name="author" content="">
</head>
<body>
<h1>Guia de in&iacute;cio r&aacute;pido de desenvolvimento Java ME MIDP</h1>
<p>Este tutorial guia voc&ecirc; atrav&eacute;s das etapas b&aacute;sicas da utiliza&ccedil;&atilde;o do NetBeans IDE para criar uma plataforma Java&trade;, Micro Edition (plataforma Java&trade; ME), aplicativo Perfil de dispositivo de informa&ccedil;&atilde;o m&oacute;vel (MIDP) e &eacute; desenhado para iniciar o desenvolvimento do aplicativo m&oacute;vel mais r&aacute;pido poss&iacute;vel. O tutorial a seguir o orienta atrav&eacute;s de algumas etapas b&aacute;sicas do trabalho com o sistema de projeto. N&oacute;s mostramos duas maneiras de criar um projeto Java ME MIDP chamado &quot;MyHello&quot; que exibe o texto &quot;Make My Day&quot; em um emulador de dispositivo. Este tutorial preparar voc&ecirc; para usar outros recursos do IDE para o desenvolvimento de aplicativos CLDC/MIDP.</p>
<!-- <p class="notes"><b>Observa&ccedil;&atilde;o:</b> Se voc&ecirc; estiver usando o NetBeans IDE 6.8, consulte o <a href="../../68/javame/quickstart.html">Guia de In&iacute;cio R&aacute;pido ao Desenvolvimento em NetBeans IDE 6.8 Java ME MIDP</a>.</p>-->
<h3>Conte&uacute;do</h3>
<img  src="../../../images_www/articles/69/netbeans-stamp-69-70-71.png" class="stamp"  
alt="O conte&uacute;do desta p&aacute;gina se aplica ao NetBeans IDE 6.9 ou posterior" 
title="O conte&uacute;do desta p&aacute;gina se aplica ao NetBeans IDE 6.9 ou posterior"  />

<ul>
<li><a href="#reqs" title="Requisitos do Tutorial">Requisitos do Tutorial</a></li>
<li><a href="#vmd" title="Criando aplica&ccedil;&otilde;es no vmd</a>Criando uma aplica&ccedil;&atilde;o no Visual Mobile Designer"></li>
<li><a href="#source" title="Criando aplicativos no editor de c&oacute;digo-fonte">Criando aplicativos no editor de c&oacute;digo-fonte</a></li>
<li><a href="#nextsteps" title="Pr&oacute;ximas etapas">Pr&oacute;ximas etapas</a></li>
</ul>
<h2><a name="reqs"></a>Requisitos</h2>
<p><b>Para concluir este tutorial, voc&ecirc; 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&atilde;o necess&aacute;ria</th>
            </tr> 
            <tr>
                <td class="tbltd1"><a href="https://netbeans.org/downloads/index.html" target="_blank">NetBeans IDE com Java ME</a></td>
                <td class="tbltd1">Vers&atilde;o 6.9 ou posterior </td>
            </tr>
            <tr>
                <td class="tbltd1"><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html" target="_blank">Java Development Kit</a> (JDK)</td>
                <td class="tbltd1">Vers&atilde;o 6 ou 7 </td>
            </tr>      
        </tbody>
</table>
<br>
<p><b class="notes">Observa&ccedil;&atilde;o</b>: o emulador agrupado com o IDE varia dependendo de qual instalador de sistema operacional foi baixado.</p>
    <ul>
      <li>A distribui&ccedil;&atilde;o do Windows do NetBeans 6.7 e posterior v&ecirc;m agrupado com o Java ME SDK 3.0.</li>
      <li>A distribui&ccedil;&atilde;o do Linux do NetBeans IDE est&aacute; agrupado com o Sun Java Wireless Toolkit 2.5.2.</li>
      <li>A vers&atilde;o MacOS X do NetBeans 6.9 est&aacute; agrupada com o Java ME SDK 3.0 para CLDC.</li>
    </ul>

<h2><a name="vmd"></a>Criando um aplicativo MIDP utilizando o Visual Mobile Designer</h2>
<p>O NetBeans IDE fornece um assistente que permite que voc&ecirc; crie rapidamente um projeto MIDP. Ao criar o projeto, voc&ecirc; pode optar por desenvolver a aplica&ccedil;&atilde;o no Visual Mobile Designer (VMD) ou no editor de c&oacute;digo-fonte. Utilizar o VMD fornece a habilidade de planejar visualmente o fluxo do aplicativo e o desenho da tela nas utiliza&ccedil;&otilde;es do aplicativo. O projetista cria automaticamente o c&oacute;digo para o aplicativo conforme as altera&ccedil;&otilde;es s&atilde;o salvas na tela de desenho. </p>
<h3 class="tutorial">Criando uma aplica&ccedil;&atilde;o MIDP/CLDC </h3>
<ol>
<li>Escolha <tt>Arquivo</tt> &gt; <tt>Novo projeto (Ctrl+Shift+N)</tt>. Em Categorias, selecione <tt>Java ME</tt>. Em Projetos, selecione <tt>Aplicativo m&oacute;vel</tt> e clique em Pr&oacute;ximo.</li>
<li>Insira <code>MyHello</code> no campo Nome do projeto. Use a localiza&ccedil;&atilde;o de projeto padr&atilde;o ou altere-a para o diret&oacute;rio de sua prefer&ecirc;ncia no sistema. Neste tutorial, esse diret&oacute;rio &eacute; definido como <code>$PROJECTHOME</code>. </li>
<li>Marque as caixas de verifica&ccedil;&atilde;o <tt>Definir como projeto principal</tt> e <tt>Criar Hello MIDlet</tt> (ambas est&atilde;o marcadas por padr&atilde;o). Clique em Pr&oacute;ximo. </li>
<li>Selecione o padr&atilde;o como a plataforma do emulador e utilize os padr&otilde;es restantes. Clique em Terminar. </li>
<!--li><a name="template"></a>Expand &quot;Configuration templates provided by 
installed CLDC platforms&quot; and &quot;Sun Java  Wireless Toolkit 2.52 for CLDC &quot; 
folders. Check the boxes next to each of the configurations. 
The IDE automatically creates a new project configuration for each template 
listed.
-->

<li>O IDE cria a pasta do projeto <code>$PROJECTHOME/MyHello</code>. A pasta do projeto cont&eacute;m todos os c&oacute;digos-fonte e os metadados do projeto, como o script Ant do projeto. A pr&oacute;pria aplica&ccedil;&atilde;o &eacute; exibida na janela Design de fluxo do Visual Mobile Designer.</li>
<p><img src="../../../images_www/articles/71/mobility/quickstart/newjavameproject.png" alt="Visualiza&ccedil;&atilde;o de fluxo de Hello Midlet no IDE" width="608" height="374"></p>
<p>Observa&ccedil;&atilde;o: para uma descri&ccedil;&atilde;o completa dos componentes da paleta dispon&iacute;veis, consulte a <a href="http://wiki.netbeans.org/VisualMobileDesignerPalatteReference">Refer&ecirc;ncia da paleta do Visual Mobile Designer</a>.</p>
</ol>
<h3 class="tutorial">Editando o c&oacute;digo-fonte Java</h3>
<p>Agora, vamos editar o texto exibido pelo MIDlet.</p>
<ol>
<li>Em <tt>HelloMIDlet.java</tt> clique em Tela para mostrar a janela Projetista de tela exibindo a Tela do dispositivo, que &eacute; a &uacute;nica tela dispon&iacute;vel no aplicativo. </li>
<li>Clique na mensagem <tt>Hello World!</tt> na tela do dispositivo. Na janela Propriedades, clique no texto <tt>Hello World!</tt> para modificar a mensagem e pressione Enter. Neste exemplo, digitamos <tt>Make my day</tt>.</li>
<p><img src="../../../images_www/articles/71/mobility/quickstart/stringedit.png" alt="O texto 'Make my day' &eacute; digitado no campo de texto da janela Propriedades." ></p>
<li>A visualiza&ccedil;&atilde;o Tela exibe o texto inserido no campo Texto.</li>
<p><img src="../../../images_www/articles/71/mobility/quickstart/motd-screen.png" alt="O texto 'Make my day' est&aacute; vis&iacute;vel na visualiza&ccedil;&atilde;o Tela do dispositivo na visualiza&ccedil;&atilde;o Tela do VMD." ></p>
</ol>
<h3 class="tutorial">Compilando e executando o projeto</h3>
<ol>
<li>Selecione <tt>Executar</tt> &gt; <tt>Executar projeto principal (F6)</tt> no menu Executar). Siga o progresso da compila&ccedil;&atilde;o do projeto na Janela de sa&iacute;da. Observe que o arquivo <code>HelloMIDlet.java</code> &eacute; constru&iacute;do antes de ser executado. Um emulador de dispositivo &eacute; aberto para exibir os resultados do MIDlet executado. O emulador de dispositivo inicia o MIDlet e exibe o texto inserido no c&oacute;digo-fonte.</li>
  <p><strong>Dica:</strong> &eacute; poss&iacute;vel especificar o emulador para executar o MIDlet ao clicar com o bot&atilde;o direito do mouse no n&oacute; do projeto e selecionar Executar com...<tt></tt> do menu contextual. O <tt>DefaultFXPhone1</tt> dispon&iacute;vel no Java ME SDK 3.0 &eacute; mostrado abaixo.</p>
  <p><img src="../../../images_www/articles/71/mobility/quickstart/motd-emulator.png" alt="Mensagem Fa&ccedil;a meu dia exibida no emulador para celular Java ME SDK JavaFX "></p>
<li>Clique no bot&atilde;o abaixo de Sair para fechar o MIDlet. Em seguida, clique no bot&atilde;o no canto superior direito do dispositivo para fechar a janela do emulador. </li>
</ol>
</div>

<h2><a name="source"></a>Criando uma aplica&ccedil;&atilde;o MIDP usando o editor de c&oacute;digo-fonte</h2>
<div class="indent">
<p>Usando o Editor de c&oacute;digo-fonte, crie manualmente o c&oacute;digo para os MIDlets. Ao criar o c&oacute;digo no Editor de c&oacute;digo-fonte, voc&ecirc; tem mais flexibilidade ao editar o c&oacute;digo e pode inserir blocos do c&oacute;digo do pr&eacute;-processador. Em seguida, criamos o aplicativo <code>MyHello</code> usando os assistentes para Novo projeto e Novo arquivo e completaremos o c&oacute;digo usando o editor de c&oacute;digo-fonte. </p>

<h3 class="tutorial">Criando um novo projeto Java ME MIDP </h3>
<ol>
<li>Escolha <tt>Arquivo</tt> &gt; <tt>Novo projeto (Ctrl-Shift-N)</tt>. Em Categorias, selecione <tt>Java ME</tt>. Em Projetos, selecione <tt>Aplicativo m&oacute;vel</tt> e clique em Pr&oacute;ximo.</li>
<li>Digite <code>MyHelloMIDlet</code> no campo Nome do projeto (observe que &quot;MID&quot; &eacute; em mai&uacute;sculas). Especifique o local do projeto que &eacute; diferente do local do projeto <a href="#vmd"><code>MyHello</code></a> criado anteriormente. Fazemos refer&ecirc;ncia a este diret&oacute;rio como <code>$PROJECTHOME</code> neste tutorial. </li>
<li>Marque a caixa de verifica&ccedil;&atilde;o Definir como projeto principal e desmarque a caixa Criar Hello MIDlet. Clique em Pr&oacute;ximo. </li>
<li>Selecione a plataforma do emulador padr&atilde;o e utilize os padr&otilde;es restantes. Clique em Terminar. </li>
<!--li>Expand &quot;Configuration templates provided by installed CLDC platforms&quot; and &quot;Sun Java Wireless Toolkit 2.52 for CLDC &quot; folders. Check the boxes next to each of the configurations. The IDE automatically creates a new project configuration for each template listed. </li-->
<li>O IDE cria a pasta do projeto <code>$PROJECTHOME/MyHelloMIDlet</code>. A pasta do projeto cont&eacute;m todos os c&oacute;digos-fonte e os metadados do projeto, como o script Ant do projeto. </li>
<li>Clique com o bot&atilde;o direito do mouse no n&oacute; <code>MyHelloMIDlet</code> na janela do Explorer e escolha </tt>Novo<tt> &gt; </tt>MIDlet<tt>.</li>
<li>Insira <code>HelloMIDlet</code> como o nome do MIDlet (observe que &quot;MID&quot; n&atilde;o est&aacute; em mai&uacute;sculas por padr&atilde;o). Clique em Terminar. O arquivo <code>HelloMIDlet.java</code> &eacute; criado e o c&oacute;digo-fonte &eacute; exibido na janela Editor do IDE. </li>
<li>Clique no Editor de c&oacute;digo-fonte e altere 
<pre class="examplecode">public class HelloMIDlet extends MIDlet</pre>

para 
<pre class="examplecode">public class HelloMIDlet
extends MIDlet implements javax.microedition.lcdui.CommandListener
{</pre>
</li>
<li>Adicione o seguinte texto antes do m&eacute;todo <code>startApp()</code>: 
<pre class="examplecode">
    private void initialize() {
        javax.microedition.lcdui.Display.getDisplay(this).setCurrent(get_helloTextBox());
    }

    public void commandAction(javax.microedition.lcdui.Command command, javax.microedition.lcdui.Displayable displayable) {
        if (displayable == helloTextBox) {
            if (command == exitCommand) {
                javax.microedition.lcdui.Display.getDisplay(this).setCurrent(null);
                destroyApp(true);
                notifyDestroyed();
            }
        }
    }

    private javax.microedition.lcdui.TextBox get_helloTextBox() {
        if (helloTextBox == null) {
            helloTextBox = new javax.microedition.lcdui.TextBox(null, &quot;Hello Test Code&quot;, 120, 0x0);
            helloTextBox.addCommand(get_exitCommand());
            helloTextBox.setCommandListener(this);
        }
        return helloTextBox;
    }

    private javax.microedition.lcdui.Command get_exitCommand() {
        if (exitCommand == null) {
            exitCommand = new javax.microedition.lcdui.Command(&quot;Exit&quot;, javax.microedition.lcdui.Command.EXIT,
                    1);
        }
        return exitCommand;
    }
    javax.microedition.lcdui.TextBox helloTextBox;
    javax.microedition.lcdui.Command exitCommand;
</pre>
</li>
<li>Adicione uma linha <code>initialize();</code> ao m&eacute;todo <code>startApp()</code> para que tenha a seguinte apar&ecirc;ncia: 
<pre class="examplecode">  public void startApp() {
initialize();
}
</pre>
</ol>
<h3 class="tutorial">Editando o c&oacute;digo-fonte Java</h3>
<p>Agora, vamos adicionar texto ao MIDlet para exibi&ccedil;&atilde;o.</p>
<ol>
<li>No m&eacute;todo <code>get_helloTextBox()</code>, substitua o c&oacute;digo de exemplo, &quot;Hello Test Code&quot; com um texto a sua escolha. Por exemplo, &quot;Fa&ccedil;a meu dia.&quot;
</ol>
<!--<p><b class="notes">Observa&ccedil;&atilde;o:</b> para um guia completo sobre o uso do editor de c&oacute;digo-fonte Java no NetBeans, consulte <a href="../../67/java/editor-tips.html">Edi&ccedil;&atilde;o de Java no NetBeans IDE</a>.</p>-->

<h3 class="tutorial">Compilando e executando o projeto</h3>
<ol>
<li>Selecione <tt>Executar</tt> &gt; <tt>Executar projeto principal (F6)</tt> no menu Executar). Siga o progresso da compila&ccedil;&atilde;o do projeto na Janela de sa&iacute;da. Note que o arquivo <code>HelloMIDlet.java</code> &eacute; constru&iacute;do antes de ser executado. Um emulador de dispositivo abre para exibir os resultados do MIDlet executado e exibe o testo inserido no c&oacute;digo fonte.</li>
<p><img src="../../../images_www/articles/71/mobility/quickstart/mmd-emulator.png" alt="Mensagem Fa&ccedil;a meu dia exibida no emulador Java ME SDK 3.0 CLDC Clamshell"></p>
</ol>
</div>

<div class="feedback-box"><a href="/about/contact_form.html?to=6&subject=NetBeans%20MIDP%20Development%20Quick%20Start%20Guide">Envie-nos seus coment&aacute;rios</a></div>
<br style="clear:both;" />
<h2><a name="nextsteps"></a>Pr&oacute;ximas etapas </h2>

<p>Para mais tutoriais mostrando como desenvolver aplicativos MIDP e CLDC visite a Trilha do aprendizado de aplicativo m&oacute;vel.</p>
<ul>
<li><a href="../../trails/mobility.html">Trilha do aprendizado de Java ME no NetBeans</a></li>
</ul>
</body>
</html>