| // |
| // 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+] |