blob: 2ca441124329343249bc430bf547b92667cfe7ba [file] [log] [blame]
<!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(&quot;problem accessing file&quot;+file.getAbsolutePath());
}
} else {
System.out.println(&quot;File access cancelled by user.&quot;);
}
} </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 &quot;.txt&quot; extension
return file.isDirectory() || file.getAbsolutePath().endsWith(&quot;.txt&quot;);
}
@Override
public String getDescription() {
// This description will be displayed in the dialog,
// hard-coded = ugly, should be done via I18N
return &quot;Text documents (*.txt)&quot;;
}
} </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>