Você está na página 1de 16

Como usar arquivos Choosers

Optantes arquivos fornecem uma interface grfica para navegar no sistema de arquivo, e ento escolher um arquivo ou diretrio a partir de uma lista ou digitando o nome de um arquivo ou diretrio. Para exibir um seletor de arquivos, voc costuma usar o JFileChooser API para mostrar um modal de dilogo contendo o seletor de arquivos. Outra forma de apresentar um seletor de arquivos adicionar uma instncia do JFileChooser para um recipiente. Nota: Se voc pretende distribuir o seu programa como Java unsigned aplicativo Web Start, ento em vez de usar o JFileChooser API voc deve usar os servios de arquivo fornecidos pela API JNLP. Esses servios FileOpenService e FileSaveService - no s fornecer suporte para escolher os arquivos em um ambiente restrito, mas tambm cuidar de realmente abrir e salv-los. Um exemplo do uso desses servios est em JWSFileChooserDemo . Documentao para o uso da API JNLP pode ser encontrado no Java Web Start lio.

Clique no boto Iniciar para executar JWSFileChooserDemo usando Java Web Start ( de download JDK 6 ou posterior ). Como alternativa, para compilar e executar o exemplo de si mesmo, consultar o ndice de exemplo .

Ao trabalhar com o JWSFileChooserDemo exemplo, tome cuidado para no perder os arquivos que voc precisa. Sempre que voc clique no boto Salvar e selecione um arquivo existente, esta demo traz o arquivo existe caixa de dilogo com um pedido para substituir o arquivo. Aceitando o pedido sobrescreve o arquivo. O resto desta seo discute como usar o JFileChooser API. A JFileChooser objeto s apresenta a interface grfica para a escolha de arquivos. Seu programa responsvel por fazer algo com o arquivo escolhido, como abrir ou salv-lo. Consulte / S bsicas para obter informaes sobre como ler e gravar arquivos. O JFileChooser API torna fcil para abrir e salvar aberto dilogos. O tipo de olhar e sentir o que determina essas caixas de dilogo padro parecido e como eles diferem.No olhar Java e sensao, caixa de dilogo Salvar parece o mesmo que o dilogo aberto, exceto o ttulo na janela do dilogo e do texto no

boto que aprovar a operao.Aqui est uma foto de um padro aberto de dilogo no olhar ea sensao de Java:

Aqui est uma foto de um aplicativo chamado FileChooserDemo que traz um dilogo aberto e uma caixa de dilogo de salvamento.

Tente isto: 1. Compilar e executar o exemplo, consultar o ndice de exemplo . 2. Clique no boto Abrir um arquivo. Navegar em torno do seletor de arquivos, escolha um arquivo e clique no boto Abrir da caixa de dilogo. 3. Use o boto Salvar um arquivo para abrir um dilogo de

salvamento. Tente usar todos os controles sobre a seleo de arquivos. 4. No arquivo fonte FileChooserDemo.java , altere o modo de seleo de arquivos para diretrios modo somente. (Busca por DIRECTORIES_ONLY e descomente a linha que o contm.) Em seguida, compilar e executar o exemplo novamente. Voc s ser capaz de ver e selecionar diretrios e no as pastas comuns.

Trazer um padro aberto de dilogo requer apenas duas linhas de cdigo:


/ / Criar um seletor de arquivos ltima JFileChooser fc = new JFileChooser (); ... / / Em resposta a um clique de boto: int = returnVal fc.showOpenDialog ( aComponent );

O argumento para o showOpenDialog mtodo especifica o componente pai para o dilogo. O componente pai afecta a posio da caixa de dilogo e da moldura que o dilogo depende. Por exemplo, o Java olhar e sentir lugares do dilogo diretamente sobre o componente pai. Se o componente principal em um quadro, em seguida, a caixa de dilogo dependente que moldura. Esta caixa de dilogo desaparece quando o quadro minimizada e reaparece quando o quadro maximizada. Por padro, um seletor de arquivos que no tenha sido mostrado antes exibe todos os arquivos no diretrio home do usurio. Voc pode especificar o diretrio inicial do seletor de arquivo usando um JFileChooser 's outros construtores, ou voc pode definir o diretrio com o SetCurrentDirectory mtodo. A chamada para showOpenDialog aparece no actionPerformed mtodo do ouvinte ao Abrir um boto de arquivo:
public void actionPerformed (ActionEvent e) { / / Tratamento de ao do boto aberto. if (e.getSource () == openButton) { int returnVal = fc.showOpenDialog (FileChooserDemo.this);

if (returnVal JFileChooser.APPROVE_OPTION ==) { File file = fc.getSelectedFile (); / / Este o lugar onde uma aplicao real seria abrir o arquivo. log.append ("Abertura:" "." + file.getName () + + newline); Else {} log.append ("comando Abrir cancelada pelo usurio." + newline); } } ... }

Os mostram Xxx dilogo mtodos retornam um inteiro que indica se o usurio selecionou um arquivo. Dependendo de como voc usa um seletor de arquivos, muitas vezes suficiente para verificar se o valor de retorno APPROVE_OPTION e, em seguida, para no alterar qualquer outro valor. Para obter o arquivo escolhido (ou o diretrio, se voc configurar o seletor de arquivos para permitir que as selees de diretrio), chame o getSelectedFile mtodo na seleo de arquivos. Este mtodo retorna uma instncia do arquivo . O exemplo obtm o nome do arquivo e usa-lo na mensagem de log. Voc pode chamar outros mtodos no arquivo objeto, tais como getPath , isDirectory , ou existepara obter informaes sobre o arquivo. Voc tambm pode chamar outros mtodos, como excluir e renomear para alterar o arquivo de alguma forma. Claro, voc tambm pode querer abrir ou salvar o arquivo usando uma das classes de leitor ou escritor fornecidos pela plataforma Java. Ver Bsico I / O para obter informaes sobre o uso de leitores e escritores a ler e escrever dados para o sistema de arquivos. O programa de exemplo usa a mesma instncia do JFileChooser classe para exibir um dilogo de salvamento padro. Desta vez, o programa chama showSaveDialog :
int returnVal = fc.showSaveDialog (FileChooserDemo.this);

Usando o exemplo chooser mesmo arquivo para mostrar o seu abrir e salvar os dilogos, o programa colhe os seguintes benefcios:

O seletor lembra o diretrio atual entre os usos, ento as verses abertas e salvar automaticamente compartilham o mesmo diretrio atual. Voc tem que personalizar apenas um seletor de arquivos, e as

personalizaes se aplicam tanto a abrir e salvar verses. Finalmente, o programa exemplo tem comentada linhas de cdigo que permitem alterar o modo de seleo de arquivos. Por exemplo, a seguinte linha de cdigo faz com que o seletor de arquivos capaz de selecionar apenas diretrios, e no os arquivos:
fc.setFileSelectionMode (JFileChooser.DIRECTORIES_ONLY);

Outro modo de seleo possvel FILES_AND_DIRECTORIES . O padro FILES_ONLY . A imagem seguinte mostra um dilogo aberto com o modo de seleo de arquivo definido para DIRECTORIES_ONLY . Note-se que, no olhar e sentir Java pelo menos, os diretrios apenas so visveis - arquivos no.

Se voc deseja criar um seletor de arquivos para uma outra tarefa de abrir ou salvar, ou se voc quiser personalizar o seletor de arquivos, continue lendo. Vamos discutir os seguintes tpicos:

Outro exemplo: FileChooserDemo2 Usando um seletor de arquivos para uma tarefa personalizada Filtrando a lista de arquivos Personalizando a visualizao do arquivo

Proporcionar um componente acessrio O Arquivo Seletor API Exemplos que usam Choosers Arquivo

Outro exemplo: FileChooserDemo2

Vejamos FileChooserDemo2 exemplo, uma verso modificada do programa demo anterior que usa mais do JFileChooser API. Este exemplo usa um seletor de arquivo que foi personalizada de vrias maneiras. Como o exemplo original, o usurio chama um seletor de arquivos com o apertar de um boto. Aqui est uma foto da seleo de arquivos:

Como mostra a figura, este seletor de arquivos foi personalizada para uma tarefa especial (Prenda), fornece um filtro de arquivos usurio-choosable (apenas imagens), usa uma exibio de arquivo especial para arquivos de imagem, e tem um componente acessrio que exibe um esboo de miniaturas do arquivo de imagem selecionado. O restante desta seo mostra o cdigo que cria e personaliza este seletor de arquivos. Veja o ndice de exemplo para todos os links para os arquivos necessrios por este exemplo.
Usando um seletor de arquivos para uma tarefa personalizada

Como voc viu, o JFileChooser classe fornece o showOpenDialog mtodo para exibir um dilogo aberto e showSaveDialog mtodo para exibir uma caixa de dilogo de salvamento. A classe tem outro mtodo, showDialog , para exibir um seletor de arquivos para uma tarefa personalizada em uma caixa de dilogo. No olhar Java e sentir, a nica diferena entre este dilogo e as caixas de dilogo Seletor outros arquivos o ttulo na janela de dilogo eo rtulo no boto aprovar. Aqui est o cdigo de FileChooserDemo2 que traz a caixa de dilogo de seleo de arquivos para o Anexar tarefa:
JFileChooser fc = new JFileChooser (); int returnVal = fc.showDialog (FileChooserDemo2.this, "Anexar");

O primeiro argumento para o showDialog mtodo o componente pai para o dilogo. O segundo argumento uma string objeto que fornece tanto o ttulo para a janela de dilogo eo rtulo para o boto de aprovar. Mais uma vez, o seletor de arquivos no faz nada com o arquivo selecionado. O programa responsvel pela execuo da tarefa personalizada para que o seletor de arquivo foi criado.
Filtrando a lista de arquivos

Por padro, um seletor de arquivos exibe todos os arquivos e diretrios que ele detecta, com exceo dos arquivos ocultos. Um programa pode aplicar uma ou mais filtros de arquivo para um seletor de arquivos para que o seletor mostra apenas alguns arquivos. O seletor de arquivo chama o filtro de aceitar mtodo para cada arquivo para determinar se ele deve ser exibido. Um filtro de arquivo aceita ou rejeita um arquivo com base em critrios como tipo de arquivo, tamanho, propriedade, e assim por diante. Os filtros afetam a lista de arquivos exibidos pelo seletor de arquivos. O usurio pode digitar o nome de qualquer arquivo mesmo se ele no for exibido. suporta trs diferentes tipos de filtragem. Os filtros so verificados na ordem listada aqui. Por exemplo, um filtro de aplicativo controlado v apenas os ficheiros aceites pela built-in de filtragem.
JFileChooser

Built-in de filtragem A filtragem configurado atravs de chamadas de mtodos especficos de um seletor de arquivos. Atualmente apenas o built-in filtro disponvel para arquivos ocultos, tais como aqueles cujos nomes comeam com ponto

(.) Em sistemas UNIX. Por padro, arquivos ocultos no so mostradas. Chame setFileHidingEn abled (false) para mostrar arquivos ocultos. Controlado por aplicativo de filtragem A aplicao determina quais arquivos so mostrados. Criar uma subclasse personalizada de FileFilter , instanci-lo, e usar o exemplo como um argumento para asetFileFilter mtodo. O filtro instalado exibido na lista de usurio choosable filtros. O seletor de arquivo mostra apenas os arquivos que o filtro aceita. Usurio choosable filtragem O arquivo chooser GUI fornece uma lista de filtros que o usurio pode escolher. Quando o usurio escolhe um filtro, o seletor de arquivo mostra apenas os arquivos aceitos por esse filtro. FileChooserDemo2 adiciona um arquivo de filtro personalizado lista de usurio choosable filtros:
fc.addChoosableFileFilter (novo ImageFilter ());

Por padro, a lista de usurio choosable filtros inclui o Accept All filtro, que permite ao usurio ver todos os arquivos noocultos. Este exemplo usa o seguinte cdigo para desativar o Accept All filtro:
fc.setAcceptAllFileFilterUse d (false);

Nosso filtro de arquivo personalizado implementado em ImageFilter.java e uma subclasse de FileFilter . O ImageFilter clas se implementa agetDescription mtodo para retornar "apenas imagens" - uma seqncia de caracteres para

colocar na lista de usurio choosable filtros ImageFilter tambm implementa a aceitar mtodo para que ele aceite todos os diretrios e qualquer arquivo que tem um png. , jpg. , . jpeg , . gif , . tif , ou . tiff extenso do arquivo.
public boolean accept (File f) { if (f.isDirectory ()) { return true; } Seqncia de extenso = Utils.getExtension (f); if (extenso = null) { if (extension.equals (Utils.tiff) | | extension.equals (Utils.tif) | | extension.equals (Utils.gif) | | extension.equals (Utils.jpeg) | | extension.equals (Utils.jpg) | | extension.equals (Utils.png)) { return true; Else {} return false; } } return false; }

Ao aceitar todos os diretrios, este filtro permite ao usurio navegar em torno do sistema de arquivos. Se as linhas a negrito foram omitidos do presente mtodo, o utilizador seria limitado para o directrio com o qual o seletor foi inicializada. O exemplo de cdigo anterior usa o getExtension mtodo e constantes string de vrios Utils.java , mostrado aqui:
public class Utils {

public final static String jpeg = "jpeg"; jpg public String static final = "jpg"; final String public static gif = "gif"; public final static String tiff = "tiff"; final String public static tif = "tif"; public final static String png = "png"; / * * Obter a extenso de um arquivo. * / public static string getExtension (File f) { Cordas ext = null; String s = f.getName (); int i = s.lastIndexOf ('.'); se (i> 0 && i <s.length () - 1) { . ext s.substring = (i +1) toLowerCase (); } voltar ext; } }

Personalizando a visualizao do arquivo

No olhar e sentir Java, a lista chooser mostra o nome de cada arquivo e exibe um pequeno cone que representa se o arquivo um arquivo de verdade ou um diretrio. Voc pode personalizar essa exibio de arquivo , criando uma subclasse personalizada de FileView e usando uma instncia da classe como um argumento para a setFileViewmtodo. O exemplo usa uma instncia de uma classe personalizada, implementado em ImageFileView.java , como vista o seletor de arquivos de arquivo.
fc.setFileView (novo ImageFileView ());

O ImageFileView classe mostra um cone diferente para cada tipo de imagem aceite pelo filtro de imagem descrito anteriormente. O ImageFileView classe substitui os cinco mtodos abstratos definidos na FileView como se segue.
GetTypeDescription String (File f)

Retorna uma descrio do tipo de arquivo. Aqui est ImageFileView 's implementao deste mtodo:
getTypeDescription public String (File f) { Seqncia de extenso = Utils.getExtension (f); Tipo String = null; if (extenso = null) { if (extension.equals (Utils.jpeg) | | extension.equals (Utils.jpg)) { type = "Imagem JPEG"; } Else if (extension.equals (Utils.gif)) { type = "imagem GIF"; } Else if (extension.equals (Utils.tiff) | | extension.equals (Utils.tif)) { type = "Imagem TIFF"; } Else if (extension.equals (Utils.png)) { type = "Imagem PNG"; } } tipo de retorno; } cone getIcon (File f)

Retorna um cone representando o arquivo ou o seu tipo. Aqui est ImageFileView 's implementao deste mtodo:
pblica cone getIcon (File f) { Seqncia de extenso = Utils.getExtension (f); cone = null; if (extenso = null) { if (extension.equals (Utils.jpeg) | | extension.equals (Utils.jpg)) { icon = jpgIcon; } Else if (extension.equals (Utils.gif)) { icon = gifIcon;

} Else if (extension.equals (Utils.tiff) | | extension.equals (Utils.tif)) { icon = tiffIcon; } Else if (extension.equals (Utils.png)) { icon = pngIcon; } } voltar cone; } Cordas getName (File f)

Retorna o nome do arquivo. A maioria das implementaes deste mtodo deve retornar nulo para indicar que o olhar ea sensao deve descobrir. Outra aplicao comum retornos f.getName () .
GetDescription String (File f)

Retorna uma descrio do arquivo. A inteno descrever arquivos individuais, mais especificamente. Uma implementao comum deste mtodo retorna nulo para indicar que o olhar ea sensao deve descobrir.
Boolean isTraversable (File f)

Retorna se um diretrio transitvel. A maioria das implementaes deste mtodo deve retornar nulo para indicar que o olhar ea sensao deve descobrir. Alguns aplicativos podem querer impedir que os usurios descendente em um certo tipo de diretrio, porque representa um documento composto. O isTraversable mtod o nunca deve retornar verdadeiro para um diretrio no.
Proporcionar um componente acessrio

O seletor de arquivo personalizado em FileChooserDemo2 tem um componente acessrio. Se o item selecionado uma imagem PNG, JPEG, TIFF, GIF ou, o componente acessrio apresenta um esboo da imagem. Caso contrrio, o componente acessrio est vazio. Alm de um visualizador, provavelmente o uso mais comum para o componente acessrio um painel com mais controles sobre ele como caixas de verificao que alternam entre as caractersticas. O exemplo chama o setAccessory mtodo para estabelecer uma instncia da ImagePreview classe, implementado em ImagePreview.java , como componente do seletor do acessrio:
fc.setAccessory (novo ImagePreview (fc));

Qualquer objeto que herda da JComponent classe pode ser um componente acessrio. O componente deve ter um tamanho preferido que fica bem no seletor de arquivos. O seletor de arquivo dispara um evento de alterao de propriedade quando o usurio seleciona um item na lista. Um programa com um componente acessrio deve se cadastrar para receber esses eventos para atualizar o componente acessrio sempre que as alteraes de seleo. No exemplo, o ImagePreview prprio objecto regista para estes eventos. Isso mantm todo o cdigo relacionado ao componente acessrio juntos em uma classe. Aqui a implementao do exemplo da propertyChange mtodo, que o mtodo chamado quando um evento de alterao de propriedade disparado:
/ / onde as variveis membros so declarados File file = null; ... propertyChange public void (PropertyChangeEvent e) { boolean update = false; Cordas prop = e.getPropertyName (); / / Se o diretrio alterado, no mostre uma imagem. if (JFileChooser.DIRECTORY_CHANGED_PROPERTY.equals (prop)) { file = null; atualizar = true; / / Se um arquivo foi selecionado, descobrir qual . } Else if (JFileChooser.SELECTED_FILE_CHANGED_PROPERTY.equals (prop)) { file = (File) e.getNewValue (); atualizar = true; } / / Atualiza a visualizao em conformidade. if (atualizao) { thumbnail = null; if (isShowing ()) { loadImage ();

repaint (); } } }

Se SELECTED_FILE_CHANGED_PROPERTY a propriedade que mudou, este mtodo obtm um arquivo objeto da seleo de arquivos. O loadImage e redesenhar os mtodos usar o arquivo objeto para carregar a imagem e redesenhar o componente acessrio.
O Arquivo Seletor API

A API para usar optantes arquivo cai nas seguintes categorias:


Criar e exibir o Seletor de arquivos Selecionando arquivos e diretrios Navegando Lista de Seletor de arquivos de Personalizar o Seletor de arquivos

Criar e exibir o Seletor de arquivos Mtodo ou construtor JFileChooser () JFileChooser (File) JFileChooser (String) int showOpenDialog (Componente) int showSaveDialog (Componente) int showDialog (String Component) Mtodo Propsito Cria uma instncia de seleo de arquivos. O arquivo e cordas argumentos, quando presentes, fornecer o diretrio inicial.

Mostra uma janela modal contendo o seletor de arquivos. Esses mtodos retornam APPROVE_OPTION se o utilizador autorizado a operao eCANCEL_OPTION se o utilizador cancelado. Outro valor de retorno possvel ERROR_OPTION , o que significa um erro inesperado ocorreu.

Selecionando arquivos e diretrios Propsito

vazio setSelectedFile (File) Define ou obtm o arquivo selecionado ou (se a seleo getSelectedFile File () de diretrio foi ativado) diretrio. setSelectedFiles vazios (Arquivo []) de arquivos [] getSelectedFiles () Define ou obtm os arquivos atualmente selecionados se o seletor de arquivos est definido para permitir a seleo mltipla.

vazio setFileSelectionMode Define ou obtm o modo de seleo de arquivos. Os (int) valores aceitveis so FILES_ONLY (o

getFileSelectionMode void padro), DIRECTORIES_ONLY eFILES_AND_DIRECTORIES . () boolean Interpreta se diretrios ou arquivos so selecionveis de isDirectorySelectionEnable acordo com o modo de seleo atual. d () boolean isFileSelectionEnabled () vazio setMultiSelectionEnabled (boolean) boolean isMultiSelectionEnabled () Define ou se interpreta vrios arquivos podem ser selecionados de uma s vez. Por padro, um usurio pode escolher apenas um arquivo.

vazio setAcceptAllFileFilterUsed Define ou obtm se o AcceptAll filtro de arquivo usado (boolean) como uma escolha permitida na lista choosable filtro, o boolean valor padro verdadeiro . isAcceptAllFileFilterUsed () Dilogo CreateDialog (Componente) Dado um componente pai, cria e retorna uma nova caixa de dilogo que contm esse seletor de arquivos, dependente quadro do pai, e est centrado sobre o pai.

Mtodo

Navegando Lista de Seletor de arquivos de Propsito Corre a lista, que o arquivo indicado visvel o seletor de arquivo.

ensureFileIsVisible void (Arquivo)

vazio SetCurrentDirectory Define ou obtm o diretrio cujos arquivos so exibidos na (File) lista o seletor de arquivo. GetCurrentDirectory File () changeToParentDirectory void () rescanCurrentDirectory void () Altera a lista para exibir o pai do diretrio atual. Verifica o sistema de arquivos e atualizaes da lista o seletor de.

Define ou obtm a propriedade que determina se a vazio setDragEnabled manipulao de arrastar automtico est (boolean) ativado. Veja arrastar e soltar e Transferncia de boolean getDragEnabled () Dados para obter mais detalhes. Mtodo Personalizar o Seletor de arquivos Propsito Define ou obtm o componente de seleo de arquivos do acessrio. Define ou obtm o filtro de seleo de arquivos do arquivo primrio. Define ou obtm vista o seletor de arquivos.

vazio setAccessory (javax.swing.JComponent) JComponent getAccessory () vazio setFileFilter (FileFilter) FileFilter getFileFilter () vazio setFileView (FileView) FileView getFileView ()

FileFilter [] getChoosableFileFilters () vazio addChoosableFileFilter (FileFilter) boolean Sets, obtm, ou modifica a lista de filtros usurio removeChoosableFileFilter choosable arquivo. (FileFilter) vazio resetChoosableFileFilters () FileFilter getAcceptAllFileFilter () vazio setFileHidingEnabled (boolean) boolean isFileHidingEnabled () vazio setControlButtonsAreShown (boolean) getControlButtonsAreShown boolean () Define ou obtm se os arquivos ocultos so exibidos. Define ou obtm a propriedade que indica se os botes Aprovar e Cancel so mostrados na seleo de arquivos. Esta propriedade true por padro.

Exemplos que usam Choosers Arquivo

Esta tabela mostra os exemplos que usam optantes arquivo e aponta para onde os exemplos so descritos.
Exemplo
FileChooserDemo

Onde Descrito Esta seco Esta seco Esta seco

Notas Exibe um dilogo aberto e uma caixa de dilogo de salvamento. Usa um seletor de arquivos com o costume de filtragem, uma viso de arquivo personalizado, e um componente acessrio. Utiliza a API JNLP para abrir e salvar arquivos.

FileChooserDemo2

JWSFileChooserDemo

Anterior Trail Prximo


Problemas com os exemplos? Tente compilar e executar o Exemplos: Perguntas Frequentes . Reclamaes? Elogios? Sugestes? D-nos a sua opinio . O uso deste pgina e todo o material em pginas sob o ttulo "Java Tutoriais O" banner est sujeito a estes avisos legais .

Sobre a Oracle | Oracle Technology Network | Termos de servio

Copyright 1995, 2012 Oracle Corporation e / ou suas afiliadas.Todos os direitos reservados.