-AsCiA- |
|
| Ciao ragazzi,studiando il capitolo sugli I/O avevo un esercizio che chiedeva di creare una classe per il filtraggio dei files nelle schermate di dialogo... L'esercizio chiedeva di scriverla per una determinata estensione ma l'ho scritta riutilizzabile per tutte le estensioni u.u XD... ecco la classe CODICE import java.io.File; import javax.swing.filechooser.*;
/** * Un istanza di questa classe e' un filtro * per le finestre di dialogo. <br/> * Utilizzando questa classe si deve settare, * all'istanza dell'oggetto il valore stringa * dell'estensione per la quale filtrare.<br/> * Si puo' ulteriormente Attivare/Disattavare * la visualizzazione delle directory tramite * l'apposito metodo.<br/> * La visualizzazione delle directory di * default e' impostata a true. * <br/> * @author -AsCiA- */ public class FilterFile extends FileFilter {
//--------------COSTANTI--------------// private static final char C_DOT = '.';
//--------------VARIABILI DI CLASSE--------------//
//estensione per la quale filtrare private String sFilterIn = ""; //Attiva/Disattiva la visualizzazione delle cartelle private boolean bDirView = true;
//--------------COSTRUTTORE--------------// /** * Permette di istanziare un oggetto * di questa classe passando come * argomento il valore in formato * stringa per il quale filtrare * le estensioni dei files. * <br/> * @param sSetValue <br/> * Valore in formato String per * il quale settare le estensioni */ public FilterFile(String sSetValue){ setFilter(sSetValue); }
//--------------METODI PUBBLICI--------------//
/** * Questo metodo setta il valore * per il quale filtrare le * estensioni * <br/> * @param sSetValue <br/> * Valore in formato String per * il quale settare le estensioni */ public void setFilter(String sSetValue){ sFilterIn = sSetValue; }
//---------------------------------------------// /** * Questo metodo restituisce il valore * in formato stringa settato * per filtrare i file. * <br/> * @return String */ public String getFilter(){ return sFilterIn; }
//---------------------------------------------// /** * Tramite questo metodo si puo' ativare/disattivare * la visibilita' delle directory */ public void dirVisibility(boolean bValue){ bDirView = bValue; } //---------------------------------------------//
/** * Questo metodo controlla che l'estensione * del file sia uguale all'estensione stabilita * per il filtro * <br/> * * @param oFileToCheck <br/> * File al quale controllare l'estensione * * <br/> * @return <br/> * Il metodo restituisce true se l'estesione * del file rispetta l'estesione per la * quale filtrare il file.<br/> * Altrimenti restituisce false in caso * contrario. */ public boolean accept(File oFileToCheck) {
String sFileExtension = getExtension(oFileToCheck);
if(oFileToCheck.isDirectory()) { return bDirView; }
if(sFileExtension.compareToIgnoreCase(sFilterIn) == 0) { return true; }
return false; }
public String getDescription() { return "All files ." + getFilter(); }
//--------------METODI PRIVATI--------------//
//Il metodo restituisce l'estensione del file private String getExtension(File oFile) { String sFileName = oFile.getName();
//Ottengo la posizione del punto int loc = sFileName.lastIndexOf(C_DOT);
//Verifico che il funto non sia il primo //o l'ultimo carattere. //Se il controllo e' positivo allora //restituisco l'enstensione del file //altrimenti restituisco una stringa //vuota if(loc > 0 && loc < sFileName.length()-1) { return sFileName.substring(loc+1); }
return ""; }
} Il funzionamento e' molto semplice... per richiamae una finestra di dialogo settando questo filtro basta fare cosi. CODICE int iChooserStatus;
JFileChooser oChooser = new JFileChooser("../"); oChooser.setFileFilter(new FilterFile("txt")); iChooserStatus = oChooser.showDialog(null, "apri"); Per utilizzare anche l'opzione che non mostra le directory basta fare cosi: CODICE int iChooserStatus;
JFileChooser oChooser = new JFileChooser("../");
FilterFile oFilter = new FilterFile("txt"); oFilter.dirVisibility(false); oChooser.setFileFilter(oFilter);
iChooserStatus = oChooser.showDialog(null, "apri"); Edited by -AsCiA- - 26/9/2011, 21:51
|
| |