blob: 3b02a7709df465fb64f83408df5fca61be048150 [file] [log] [blame]
//
// 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.
//
= Adicionando um Seletor de Arquivos para uma Aplicação Java
:jbake-type: tutorial
:jbake-tags: tutorials
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Adicionando um Seletor de Arquivos para uma Aplicação Java - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Adicionando um Seletor de Arquivos para uma Aplicação Java
_Contribuição de Petr Dvorak link:http://blogs.oracle.com/joshis/entry/a_quick_jfilechooser_demo[+(Dez 2009)+], mantido por Alyona Stashkova_
Este tutorial mostra como adicionar um seletor de arquivos na aplicação Java usando o componente ``javax.swing.JFileChooser`` . É 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 ``.txt`` na Área de texto.
Você pode fazer download link:https://netbeans.org/projects/samples/downloads/download/Samples%252FJava%252FJFileChooserDemo.zip[+do projeto resultante com um seletor de arquivos+].
image::images/netbeans-stamp-80-74-73.png[title="O conteúdo desta página se aplica ao NetBeans IDE 7.0 e mais recente"]
*Para concluir este tutorial, você precisa dos seguintes recursos e softwares.*
|===
|Software ou Recurso |Versão Necessária
|link:http://netbeans.org/downloads/[+NetBeans IDE+] |Versão 7.0 ou uma versão mais recente
|link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+Java Development Kit+] (JDK) |Versão 6, 7 ou 8
|===
== Criando a Aplicação
Primeiro, você cria uma nova Aplicação Java:
1. No menu principal, escolha Arquivo > Novo Projeto. Escolha a categoria Java e o tipo de projeto da Aplicação Java. Clique em Próximo.
2. Para Nome do Projeto, digite `JFileChooserDemo` e especifique o local do projeto.
3. Cancele a seleção da caixa de seleção Criar Classe Principal.
[.feature]
--
image::images/newproj-small.png[role="left", link="images/newproj.png"]
--
. Clique em Finalizar.
== Criando o Form da Aplicação
Nesta seção, você cria um contêiner ``JFrame`` e adiciona uns poucos componentes ao mesmo.
*Para criar o form JFrame:*
1. 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.
2. Para Nome de Classe, digite `JFileChooserDemo`.
3. Para Pacote, digite `jfilechooserdemo.resources`.
[.feature]
--
image::images/newjframeform-small.png[role="left", link="images/newjframeform.png"]
--
. Clique em Finalizar.
. Na janela Propriedades, insira `Aplicação de demonstração` para a propriedade Título e pressione Enter para confirmar.
*Para adicionar componentes ao form JFrame:*
1. Na Paleta, abra a categoria Menus Swing, selecione o componente Barra de Menus e arraste-o para o canto superior esquerdo do JFrame.
*Observação: * se não vir a Paleta, selecione Janela > Paleta do menu principal.
[.feature]
--
image::images/menubaradded-small.png[role="left", link="images/menubaradded.png"]
--
. Clique com o botão direito do mouse no item Editar do componente Barra de Menus e selecione Deletar no menu de contexto.
. 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.
[.feature]
--
image::images/menuitemadded-small.png[role="left", link="images/menuitemadded.png"]
--
*Observação:* 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.
. 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 `Abrir` e clique em OK.
. 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 `Abrir` e pressione Enter para confirmar.
. 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 ``OpenActionPerformed()`` é gerado. A janela do Navegador deveria se semelhante a esta:
image::images/openactionperformednavigator.png[]
. 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 ``JMenuItem1`` será colocado.
[.feature]
--
image::images/highlighting-small.png[role="left", link="images/highlighting.png"]
--
. 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 `Sair` e clique em OK.
. 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 ``Sair`` e pressione Enter para confirmar.
. 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 `ExitActionPerformed()`. O nó `ExitActionPerformed` aparece na janela do Navegador abaixo do nó `OpenActionPerformed()`.
. Para fazer com que o item de menu Sair funcione, você inclui o seguinte código-fonte no corpo do método `ExitActionPerformed`:
[source,java]
----
System.exit(0);
----
. Volte para o modo Design. Na categoria Controles de Swing da Paleta, arraste uma Área de Texto ( ``JTextArea`` ) para o form, como mostrado na figura abaixo.
[.feature]
--
image::images/textareadded-small.png[role="left", link="images/textareadded.png"]
--
. Redimensione o componente adicionado para criar espaço para o texto exibido mais tarde pelo Seletor de Arquivos. Renomeie a variável para `textarea`. O form deve parecer com a tela a seguir:
[.feature]
--
image::images/jfilechooserdemoview_final-small.png[role="left", link="images/jfilechooserdemoview_final.png"]
--
Você precisa criar uma aplicação Java simples como base para este tutorial. Em seguida, o Seletor de Arquivos real é selecionado.
== Adicionando o Seletor de Arquivos
1. Escolha Janela > Navegação > Navegador para abrir a janela Inspetor se ela ainda não estiver aberta.
2. No Navegador, clique com o botão direito do mouse no nó ``Outros Componentes`` . Escolha Adicionar da paleta > Janelas Swing > Seletor de Arquivos no menu de contexto
Como uma alternativa para o menu de contexto ``Adicionar da Paleta`` , você também pode arrastar e soltar um componente ``JFileChooser`` 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 ``JFileChooser`` é um pouco grande e você poderá acidentalmente inserir a janela em um dos painéis, o que não é o desejado.
. Um exame no Navegador confirma que um ``JFileChooser`` foi adicionado ao form.
. Clique com o botão direito do mouse no nó ``JFileChooser`` e renomeie a variável para `fileChooser`.
image::images/navigator_jframe.png[]
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.
== Configurando o Seletor de Arquivos
=== Implementando a Ação Abrir
1. Clique para selecionar o ``JFileChooser`` na janela Inspetor e, a seguir, edite suas propriedades na caixa de diálogo Propriedades. Altere a propriedade ``dialogTitle`` para `Esta é minha caixa de diálogo aberta `, pressione Enter e feche a caixa de diálogo Propriedades.
2. 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 `OPenActionPerformed` existente.
[source,java]
----
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.");
}
}
----
*Observação: * Remova primeira e a última linha do snippet de código que duplicam os existentes no arquivo de código-fonte.
. 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.
Como é possível ver, o método ``getSelectedFile()`` 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.
=== Implementação de um Filtro de Arquivo
Agora você precisa adicionar um filtro personalizado que faz com que o Seletor de Arquivos somente exiba arquivos ``*.txt`` .
1. Alterne para o modo Design e selecione o ``fileChooser`` na janela Navegador.
2. Na janela Propriedades, clique no botão de reticências ("...") ao lado da propriedade ``fileFilter`` .
3. Na caixa de diálogo Filtro de Arquivos, selecione Código Personalizado na caixa de combinação.
[.feature]
--
image::images/combobox-small.png[role="left", link="images/combobox.png"]
--
. Digite ``new MyCustomFilter()`` no campo de texto. Clique em OK.
. Para fazer com que o código personalizado funcione, você escreve uma classe interna (ou externa) ``MyCustomFilter`` que estende a classe ``FileFilter`` . 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.
[source,java]
----
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)";
}
}
----
*Observação:* para saber como implementar filtros de arquivo comutáveis, mais inteligentes, consulte o método link:http://java.sun.com/javase/7/docs/api/javax/swing/JFileChooser.html#addChoosableFileFilter%28javax.swing.filechooser.FileFilter%29[+addChoosableFileFilter+].
== Executando a Aplicação
1. Clique com o botão direito no projeto JFileChooserDemo e selecione Executar para iniciar o projeto de amostra.
2. Na caixa de diálogo Executar Projeto, selecione a classe principal `jfilechooserdemo.resources.JFileChooserDemo` e clique em OK.
image::images/run.png[]
. 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:
[.feature]
--
image::images/result_jfilechooserdemo-small.png[role="left", link="images/result_jfilechooserdemo.png"]
--
. Para fechar a aplicação, selecione Sair no menu Arquivo.
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.
link:/about/contact_form.html?to=3&subject=Feedback:%20Adding%20a%20FileChooser[+Enviar Feedback neste Tutorial+]
== Próximas Etapas
* link:http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG920[+Implementando GUIs de Java+] em _Desenvolvendo Aplicações com o NetBeans IDE_
* link:gui-binding.html[+Vinculando Beans e Dados em uma Aplicação Java com o NetBeans IDE+]
* link:gui-automatic-i18n.html[+Internacionalizando um Form GUI com o NetBeans IDE+]
* link:http://docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html[+Tutorial Java Tutorial: como usar Seletores de Arquivos+]