Carregando arquivos da maquina para a aplicação

9 respostas
W

Ae galera, tudo bem?

Gostaria de saber como que eu faço para fazer uma caixa de dialogo ter a opção de “browse” de um arquivo no sistema operaciona do usuario?

Por exemplo eu estou fazendo uma aplicação que importa arquivo txt.Quando o usuario clicar no botão “exportar”, deve aparecer a opção de “browse” para que ele procure o arquivo dentro da maquina dele.

Eu já sei fazer aparecer a caixa de dialogo, agora falta fazer ela ter o recurso.

Alguem sabe?

9 Respostas

Gleidson_Henrique

Tem que ser uma caixa de dialogo? Não pode ser um JFrame?

Dei uma breve pesquisada aqui na internet para ver se possuía uma maneira mas não encontrei.

Mas se puder ser em JFrame, será fácil implementar isso que você deseja.

Abraços

W

Pode ser uma JFrame.

Você teria uma demostração de como funcionaria?

Abrass

Gleidson_Henrique

wilnerjava:
Pode ser uma JFrame.

Você teria uma demostração de como funcionaria?

Abrass

Sim amigo, segue o código para gerar uma janela…

Nesse exemplo que estou passando, ele permite apenas os tipos informados… as vezes isso lhe é interessante… :slight_smile:

try { JFileChooser flc_ImagemProduto = new JFileChooser(); flc_ImagemProduto.setDialogTitle("Procurar fotos para produtos"); flc_ImagemProduto.showOpenDialog(flc_ImagemProduto); FileFilter filtroImagemProduto = new ExtensionFileFilter("JPG and JPEG", new String[]{"JPG", "JPEG", "PNG", "GIF", "BMP"}); flc_ImagemProduto.setFileFilter(filtroImagemProduto); flc_ImagemProduto.setFileFilter(null); String caminhoProdutoSelecionado = flc_ImagemProduto.getSelectedFile().getPath(); txt_CaminhoImagem.setText(caminhoProdutoSelecionado); //Nesse caso, pegava o retorno e passava para um campo lbl_ImagemProduto.setIcon(new ImageIcon(caminhoProdutoSelecionado)); //Aqui, era mostrado a imagem em uma label } catch (Exception ex) { JOptionPane.showMessageDialog(null, "A imagem deve possuir a extensão .JPG, .JPEG, .PNG ou .GIF!"); }

Qualquer dúvida diga ai amigo…

Abraços

W

Esse " ExtensionFileFilter" eh uma classe que voce criou?

O java não ta reconhecendo, ta pedindo pra criar classe.

Outra coisa, na linha:
flc_ImagemProduto.setFileFilter(filtroImagemProduto);
ele ta pedindo pra fazer casting.

Para voce ta compilando normal?

Abrass

W

Acho que meu Eclipse pode estar com problema.

Eu aindei dando uma pesquisada, seu código ta certo, esse ExtensionFileFilteré normal.

Da uma olhada na foto em anexo o erro que está dando para mim


Gleidson_Henrique

Bom dia amigo… Me desculpe por não ter colocado a classe junto, me esqueci hehe. Como disse, ela é somente para o filtro, caso não precisar, não há necessidade de te-la no sistema…

A classe ExtensionFileFilter segue abaixo:

package Utilitarios;

import java.io.File;
import javax.swing.filechooser.FileFilter;

public class ExtensionFileFilter extends FileFilter {
  String description;

  String extensions[];

  public ExtensionFileFilter(String description, String extension) {
    this(description, new String[] { extension });
  }

  public ExtensionFileFilter(String description, String extensions[]) {
    if (description == null) {
      this.description = extensions[0];
    } else {
      this.description = description;
    }
    this.extensions = (String[]) extensions.clone();
    toLower(this.extensions);
  }

  private void toLower(String array[]) {
    for (int i = 0, n = array.length; i < n; i++) {
      array[i] = array[i].toLowerCase();
    }
  }

  public String getDescription() {
    return description;
  }

  public boolean accept(File file) {
    if (file.isDirectory()) {
      return true;
    } else {
      String path = file.getAbsolutePath().toLowerCase();
      for (int i = 0, n = extensions.length; i < n; i++) {
        String extension = extensions[i];
        if ((path.endsWith(extension) && (path.charAt(path.length() - extension.length() - 1)) == '.')) {
          return true;
        }
      }
    }
    return false;
  }
}

Baixe o NetBeans para trabalhar com Swing, é melhor, embora já colocando essa classe resolverá o problema hehe

Abraços

W

Agora funcionou!

Obrigado pela ajuda amigo

Uma duvida,

Pq voce acha o NetBeans melhor para trabalhar com interface grafica? Tem algumas funções extras ou algo do tipo?

Voce sabe alguma função pra salvar o arquivo? No caso o mesmo esquema que voce me mostrou, só que em vez de importar ele salva o arquivo em algum lugar ( que o usuario escolher) da maquina dele?

Um abraço

Gleidson_Henrique

Na verdade, você segue o mesmo conceito.

Você encontra o lugar que quer salvar e a partir disso utiliza outras classes para criação do arquivo.

Vamos supor que é um arquivo de texto. Você utiliza o que já aprendeu (na verdade deve ser setado algum método que ira permitir ‘criar’ o nome do arquivo sem que ele exista no diretorio) e a partir disso utiliza as classes responsaveis de arquivo e leitura e escrita para então, escrever nele.

Abraços

W

Beleza, vou dar uma olhada!

Sobre o NetBeans, quais funções adicionais ele tem para Swing?

Abraço

Criado 6 de outubro de 2012
Ultima resposta 10 de out. de 2012
Respostas 9
Participantes 2