| <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| <html xmlns="http://www.w3.org/1999/xhtml"> |
| <head> |
| <title>Adicionando um Seletor de Arquivos para uma Aplicação Java</title> |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> |
| <link rel="stylesheet" type="text/css" href="../../../netbeans.css" media="screen" /> |
| <meta name="author" content="Petr Dvorak, Alyona Stashkova" /> |
| <meta name="description" content="How to add a file chooser to a Java application using the javax.swing.JFileChooser component and the NetBeans GUI Builder." /> |
| <meta name="keywords" content="javax.swing.JFileChooser, java, application, file, chooser, GUI builder" /> |
| </head> |
| <body> |
| |
| <h1>Adicionando um Seletor de Arquivos para uma Aplicação Java</h1> |
| <p><em>Contribuição de Petr Dvorak <a href="http://blogs.oracle.com/joshis/entry/a_quick_jfilechooser_demo">(Dez 2009)</a>, mantido por Alyona Stashkova</em></p> |
| |
| <p> |
| Este tutorial mostra como adicionar um seletor de arquivos na aplicação Java usando o componente <tt>javax.swing.JFileChooser</tt>. É possível codificá-lo à mão, mas utilizar o GUI Builder do NetBeans é uma maneira inteligente que economizará trabalho. Como parte do exercício, você criará uma pequena aplicação Java que carrega o arquivo <tt>.txt</tt> na Área de texto. </p> |
| |
| <p>Você pode fazer download <a href="https://netbeans.org/projects/samples/downloads/download/Samples%252FJava%252FJFileChooserDemo.zip" title="Zip de demo com o projeto (JFileChooserDemo)">do projeto resultante com um seletor de arquivos</a>. <br /> |
| </p> |
| |
| <p><b>Conteúdo</b></p> |
| <img alt="O conteúdo desta página se aplica ao NetBeans IDE 7.0 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 7.0 e mais recente" /> |
| <ul> |
| <li><a href="#app" title="Criando a Aplicação"> Criando a Aplicação</a></li> |
| <li><a href="#menu" title="Criando o Form da Aplicação">Criando o Form da Aplicação</a></li> |
| <li><a href="#filechooser" title="Adicionando o Seletor de Arquivos">Adicionando o Seletor de Arquivos</a></li> |
| <li><a href="#config" title="Configurando o Seletor de Arquivos">Configurando o Seletor de Arquivos</a></li> |
| <li><a href="#run" title="Executando a Aplicação">Executando a Aplicação</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</a></td> |
| <td class="tbltd1">Versão 7.0 ou uma versão mais recente </td> |
| </tr> |
| <tr> |
| <td class="tbltd1"><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">Java Development Kit</a> (JDK)</td> |
| <td class="tbltd1">Versão 6, 7 ou 8 </td> |
| </tr> |
| |
| </tbody> |
| </table> |
| |
| |
| <h2><a name="app"></a>Criando a Aplicação</h2> |
| |
| <p>Primeiro, você cria uma nova Aplicação Java:</p> |
| <ol> |
| <li>No menu principal, escolha Arquivo > Novo Projeto. Escolha a categoria Java e o tipo de projeto da Aplicação Java. Clique em Próximo.</li> |
| <li>Para Nome do Projeto, digite <code>JFileChooserDemo</code> e especifique o local do projeto.</li> |
| <li>Cancele a seleção da caixa de seleção Criar Classe Principal. |
| <p class="align-center"><a href="../../../images_www/articles/72/java/gui-filechooser/newproj.png" rel="lytebox" title="Assistente Novo Projeto"> <img alt="Assistente Novo Projeto" border="1/" src="../../../images_www/articles/72/java/gui-filechooser/newproj-small.png"></a></p></li> |
| <li>Clique em Finalizar.</li> |
| |
| </ol> |
| |
| |
| <h2><a name="menu"></a>Criando o Form da Aplicação</h2> |
| <p>Nesta seção, você cria um contêiner <tt>JFrame</tt> e adiciona uns poucos componentes ao mesmo.</p> |
| |
| <p><b>Para criar o form JFrame:</b></p> |
| <ol> |
| <li>Clique com o botão direito do mouse no nó Pacotes de Código-fonte e escolha Novo > Outro. Escola a categoria Forms Swing GUI e o tipo de arquivo JFrameForm. Clique em Próximo.</li> |
| <li>Para Nome de Classe, digite <code>JFileChooserDemo</code>.</li> |
| <li>Para Pacote, digite <code>jfilechooserdemo.resources</code>. |
| <p class="align-center"><a href="../../../images_www/articles/72/java/gui-filechooser/newjframeform.png" rel="lytebox" title="O novo contêiner JFrame está sendo criado"> <img alt="O novo contêiner JFrame está sendo criado" border="1/" src="../../../images_www/articles/72/java/gui-filechooser/newjframeform-small.png"></a></p></li> |
| |
| <li>Clique em Finalizar.</li> |
| <li>Na janela Propriedades, insira <code>Aplicação de demonstração</code> para a propriedade Título e pressione Enter para confirmar.</li> |
| </ol> |
| <p><b>Para adicionar componentes ao form JFrame:</b></p> |
| <ol> |
| <li>Na Paleta, abra a categoria Menus Swing, selecione o componente Barra de Menus e arraste-o para o canto superior esquerdo do JFrame. |
| |
| <p class="notes"><b>Observação: </b> se não vir a Paleta, selecione Janela > Paleta do menu principal. </p> |
| <p class="align-center"><a href="../../../images_www/articles/72/java/gui-filechooser/menubaradded.png" rel="lytebox" title="Barra de Menu adicionada ao form JFrame"> <img alt="Barra de Menu adicionada ao form JFrame" border="1/" src="../../../images_www/articles/72/java/gui-filechooser/menubaradded-small.png"></a></p></li> |
| |
| <li>Clique com o botão direito do mouse no item Editar do componente Barra de Menus e selecione Deletar no menu de contexto. </li> |
| <li>Para adicionar um item de menu que permita abrir o FileChooser a partir da aplicação em execução, na categoria Menus Swing na Paleta, selecione um novo item de menu (JMenuItem1) e arraste-o para a Barra de Menus e solte-o no item Arquivo na Barra de Menus. |
| <p class="align-center"><a href="../../../images_www/articles/72/java/gui-filechooser/menuitemadded.png" rel="lytebox" title="Item de Menu adicionado à Barra do Menu"> <img alt="Item de Menu adicionado à Barra do Menu" border="1/" src="../../../images_www/articles/72/java/gui-filechooser/menuitemadded-small.png"></a></p> |
| <p class="notes"><b>Observação:</b> assegure-se de que a Barra de Menus esteja selecionada antes de arrastar outro item de menu para ela para que o último seja adicionado na barra de menus. </p></li> |
| |
| <li>Clique com o botão direito do mouse em jMenuItem1 na view Design e escolha Alterar Nome da Variável no menu de contexto. Renomeie o item como <code>Abrir</code> e clique em OK.</li> |
| <li>Assegure-se de que o jMenuItem1 ainda esteja selecionado na view Design. Pressione a barra de Espaço para editar o texto do componente. Altere o texto para <code>Abrir</code> e pressione Enter para confirmar.</li> |
| <li>Especifique o handler de ação para o item de menu Abrir. Clique com o botão direito do mouse no item do menu e escolha Eventos > Ação > Ação executada do menu de contexto. O GUI Builder alterna automaticamente para a view do Código-fonte e um novo método do handler de evento <tt>OpenActionPerformed()</tt> é gerado. A janela do Navegador deveria se semelhante a esta: |
| <p class="align-center"><img alt="Item de Menu adicionado à Barra do Menu" border="1/" src="../../../images_www/articles/72/java/gui-filechooser/openactionperformednavigator.png"></p></li> |
| <li>Para adicionar um item de menu para sair do FileChoser antes da aplicação ter sido criada, alterne de volta para o modo Design, na categoria Menu Swing na Paleta, selecione um item de menu (JMenuItem1) e arraste-o para a Barra de Menus abaixo do item de menu Abrir. Observe que o realce laranja indica onde o <tt>JMenuItem1</tt> será colocado. |
| <p class="align-center"><a href="../../../images_www/articles/72/java/gui-filechooser/highlighting.png" rel="lytebox" title="Realce"> <img alt="Realce" border="1/" src="../../../images_www/articles/72/java/gui-filechooser/highlighting-small.png"></a></p></li> |
| <li>Clique com o botão direito do mouse em <tt>jMenuItem1</tt> na view Design e escolha Alterar Nome da Variável no menu de contexto. Renomeie o item como <code>Sair</code> e clique em OK.</li> |
| <li>Assegure-se de que o <tt>jMenuItem1</tt> ainda esteja selecionado na view Design. Pressione a barra de Espaço para editar o texto do componente. Altere o texto para <tt>Sair</tt> e pressione Enter para confirmar.</li> |
| <li>Especifique o handler de ação para o item de menu Sair. Clique com o botão direito do mouse no item do menu e escolha Eventos > Ação > Ação executada do menu de contexto. O GUI Builder alterna automaticamente para a view do Código-fonte e um novo método de handler de evento é gerado, denominado <code>ExitActionPerformed()</code>. O nó <code>ExitActionPerformed</code> aparece na janela do Navegador abaixo do nó <code>OpenActionPerformed()</code>. </li> |
| <li>Para fazer com que o item de menu Sair funcione, você inclui o seguinte código-fonte no corpo do método <code>ExitActionPerformed</code>: |
| <pre class="samplecode"> |
| System.exit(0); </pre></li> |
| <li>Volte para o modo Design. Na categoria Controles de Swing da Paleta, arraste uma Área de Texto (<tt>JTextArea</tt>) para o form, como mostrado na figura abaixo. |
| <p class="align-center"><a href="../../../images_www/articles/72/java/gui-filechooser/textareadded.png" rel="lytebox" title="Área de Texto adicionada ao JForm"> <img alt="Área de Texto adicionada ao JForm" border="1/" src="../../../images_www/articles/72/java/gui-filechooser/textareadded-small.png"></a></p></li> |
| <li>Redimensione o componente adicionado para criar espaço para o texto exibido mais tarde pelo Seletor de Arquivos. Renomeie a variável para <code>textarea</code>. O form deve parecer com a tela a seguir: |
| <p class="align-center"><a href="../../../images_www/articles/72/java/gui-filechooser/jfilechooserdemoview_final.png" rel="lytebox" title="Aplicação Java - GUI Builder"> <img alt="Aplicação Java - GUI Builder" border="1/" src="../../../images_www/articles/72/java/gui-filechooser/jfilechooserdemoview_final-small.png"></a></p></li> |
| </ol> |
| |
| <p>Você precisa criar uma aplicação Java simples como base para este tutorial. Em seguida, o Seletor de Arquivos real é selecionado.</p> |
| |
| <h2><a name="filechooser"></a>Adicionando o Seletor de Arquivos</h2> |
| |
| <ol> |
| <li>Escolha Janela > Navegação > Navegador para abrir a janela Inspetor se ela ainda não estiver aberta.</li> |
| <li>No Navegador, clique com o botão direito do mouse no nó <tt>Outros Componentes</tt>. Escolha Adicionar da paleta > Janelas Swing > Seletor de Arquivos no menu de contexto |
| |
| <p class=tips> |
| Como uma alternativa para o menu de contexto <tt>Adicionar da Paleta</tt>, você também pode arrastar e soltar um componente <tt>JFileChooser</tt> da categoria Janelas Swing da Paleta para a área branca do GUI Builder. Isso terá o mesmo resultado, mas é um pouco mais difícil porque a exibição do <tt>JFileChooser</tt> é um pouco grande e você poderá acidentalmente inserir a janela em um dos painéis, o que não é o desejado.</p> |
| </li> |
| |
| <li>Um exame no Navegador confirma que um <tt>JFileChooser</tt> foi adicionado ao form. |
| </li> |
| <li>Clique com o botão direito do mouse no nó <tt>JFileChooser</tt> e renomeie a variável para <code>fileChooser</code>. |
| |
| <p class="align-center"><img alt="Seletor de Arquivos adicionado - View do Navegador" border="1/" src="../../../images_www/articles/72/java/gui-filechooser/navigator_jframe.png"></p></li> |
| </ol> |
| |
| |
| |
| <p>Você adicionou um Seletor de Arquivos. A seguir, você faz o ajuste fino do Seletor de Arquivos para exibir o título que deseja, adiciona um filtro de arquivo personalizado e integra o Seletor de Arquivos em sua aplicação.</p> |
| |
| |
| |
| |
| |
| <h2><a name="config"></a>Configurando o Seletor de Arquivos</h2> |
| |
| <h3>Implementando a Ação Abrir</h3> |
| |
| <ol> |
| <li>Clique para selecionar o <tt>JFileChooser</tt> na janela Inspetor e, a seguir, edite suas propriedades na caixa de diálogo Propriedades. Altere a propriedade <tt>dialogTitle</tt> para <code>Esta é minha caixa de diálogo aberta </code>, pressione Enter e feche a caixa de diálogo Propriedades.</li> |
| <li> |
| Clique no botão Código-fonte no GUI Builder para alternar para o modo Código-fonte. Para integrar o Seletor de Arquivos em sua aplicação, cole a seguinte snippet de código-fonte no método <code>OPenActionPerformed</code> existente. |
| |
| <pre class="samplecode"> |
| private void OpenActionPerformed(java.awt.event.ActionEvent evt) { |
| int returnVal = fileChooser.showOpenDialog(this); |
| if (returnVal == JFileChooser.APPROVE_OPTION) { |
| File file = fileChooser.getSelectedFile(); |
| try { |
| // What to do with the file, e.g. display it in a TextArea |
| textarea.read( new FileReader( file.getAbsolutePath() ), null ); |
| } catch (IOException ex) { |
| System.out.println("problem accessing file"+file.getAbsolutePath()); |
| } |
| } else { |
| System.out.println("File access cancelled by user."); |
| } |
| } </pre> |
| <p class="notes"><b>Observação: </b> Remova primeira e a última linha do snippet de código que duplicam os existentes no arquivo de código-fonte. </p></li> |
| |
| <li>Se o editor relata erros em seu código, clique com o botão direito do mouse em qualquer lugar no código e selecione Corrigir Importações ou pressione Ctrl+Shift+I. Na caixa de diálogo Corrigir Todas as Importações aceite os defaults para atualizar as instruções de importação e clique em OK.</li> |
| </ol> |
| <p> |
| Como é possível ver, o método <tt>getSelectedFile()</tt> do Seletor de Arquivos é chamado para determinar em que arquivo o usuário clicou, para que você possa trabalhar com ele. Esse exemplo lê o conteúdo do arquivo e o exibe na Área de Texto. |
| </p> |
| |
| |
| <h3>Implementação de um Filtro de Arquivo</h3> |
| |
| <p>Agora você precisa adicionar um filtro personalizado que faz com que o Seletor de Arquivos somente exiba arquivos <tt>*.txt</tt>.</p> |
| <ol> |
| |
| <li>Alterne para o modo Design e selecione o <tt>fileChooser</tt> na janela Navegador. </li> |
| <li>Na janela Propriedades, clique no botão de reticências ("...") ao lado da propriedade <tt>fileFilter</tt>.</li> |
| <li>Na caixa de diálogo Filtro de Arquivos, selecione Código Personalizado na caixa de combinação. |
| <p class="align-center"><a href="../../../images_www/articles/72/java/gui-filechooser/combobox.png" rel="lytebox" title="Caixa de combinação aberta"> <img alt="Caixa de combinação aberta" border="1/" src="../../../images_www/articles/72/java/gui-filechooser/combobox-small.png"></a></p></li> |
| <li> |
| Digite <tt>new MyCustomFilter()</tt> no campo de texto. Clique em OK. |
| </li> |
| <li> |
| Para fazer com que o código personalizado funcione, você escreve uma classe interna (ou externa) <tt>MyCustomFilter</tt> que estende a classe <tt>FileFilter</tt>. Copie e cole o seguinte snippet de código no código-fonte de sua classe abaixo das instruções de importação, para criar um classe interna que implementa o filtro. |
| |
| <pre class="samplecode"> |
| class MyCustomFilter extends javax.swing.filechooser.FileFilter { |
| @Override |
| public boolean accept(File file) { |
| // Allow only directories, or files with ".txt" extension |
| return file.isDirectory() || file.getAbsolutePath().endsWith(".txt"); |
| } |
| @Override |
| public String getDescription() { |
| // This description will be displayed in the dialog, |
| // hard-coded = ugly, should be done via I18N |
| return "Text documents (*.txt)"; |
| } |
| } </pre></li> |
| </ol> |
| <p class=notes><b>Observação:</b> para saber como implementar filtros de arquivo comutáveis, mais inteligentes, consulte o método <a href="http://java.sun.com/javase/7/docs/api/javax/swing/JFileChooser.html#addChoosableFileFilter%28javax.swing.filechooser.FileFilter%29" target="_blank" title="Documentação de API de JDK">addChoosableFileFilter</a>. |
| </p> |
| |
| <h2><a name="run"></a>Executando a Aplicação</h2> |
| <ol> |
| <li>Clique com o botão direito no projeto JFileChooserDemo e selecione Executar para iniciar o projeto de amostra. </li> |
| <li>Na caixa de diálogo Executar Projeto, selecione a classe principal <code>jfilechooserdemo.resources.JFileChooserDemo</code> e clique em OK. |
| <p class="align-center"><img alt="Executar" border="1/" src="../../../images_www/articles/72/java/gui-filechooser/run.png"></p> |
| </li> |
| <li>Na aplicação de Demonstração em execução, escolha Abrir no menu Arquivo para acionar a ação. O resultado deve ficar da seguinte forma: |
| <p class="align-center"><a href="../../../images_www/articles/72/java/gui-filechooser/result_jfilechooserdemo.png" rel="lytebox" title="Demonstração JFileChooser - resultado"> <img alt="Demonstração JFileChooser - resultado" border="1/" src="../../../images_www/articles/72/java/gui-filechooser/result_jfilechooserdemo-small.png"></a></p> |
| </li> |
| |
| <li>Para fechar a aplicação, selecione Sair no menu Arquivo. </li> |
| </ol> |
| <p>Examine outras janelas e caixas de diálogo úteis do Swing como o Seletor de Cores ou o Painel de Opções na Paleta GUI.</p> |
| |
| <div class="feedback-box" ><a href="/about/contact_form.html?to=3&subject=Feedback:%20Adding%20a%20FileChooser">Enviar Feedback neste Tutorial</a></div> |
| <br style="clear:both;" /> |
| |
| <h2><a name="next"></a>Próximas Etapas</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><a href="gui-binding.html">Vinculando Beans e Dados em uma Aplicação Java com o NetBeans IDE</a></li> |
| <li><a href="gui-automatic-i18n.html">Internacionalizando um Form GUI com o NetBeans IDE</a></li> |
| <li><a href="http://docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html" target="_blank" title="Como usar Seletores de Arquivos">Tutorial Java Tutorial: como usar Seletores de Arquivos</a> </li> |
| </ul> |
| |
| </body> |
| </html> |