Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    126

    [JAVA] JFileChooser

    Salve a tutti,
    ho bisogno di creare un JFileChooser in swing dentro un nuovo frame in modo da selezionare solo file .gif e .png.
    Una volta confermata la selezione del file (posso solo selezionarne uno per volta), devo ricavare il percorso dove risiede il file + nome file.
    Ho provato a guardare gli esempi nella guida java...ma non ho capito molto
    Qualcuno puo gentilmente darmi una mano?
    Grazie, ciao

  2. #2
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    ecco qua un po' di codice già pronto...

    codice:
    	private void getJFileChooser(String mode) {
    		JFileChooser jFileChooser = new JFileChooser();
    		jFileChooser.addChoosableFileFilter(new MyFilter());
    
    		File file = new File("");
    		// APRI FILE
    		if (mode == "OPEN") { 
    			int returnVal = jFileChooser.showOpenDialog(this); 
    			if (returnVal == JFileChooser.APPROVE_OPTION) {  
    				try{
    					ripristinaCondizioniIniziali();
    					jFileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
    					file = jFileChooser.getSelectedFile();
    					Reader in = new FileReader(file);
    					jTextArea.read(in,null);
    					setTitle(file.getName());
    				}catch(Exception e){
    					e.printStackTrace();
    				}
    			} 
    		} 
    		// SALVA FILE
    		if (mode == "SAVE") { 
    			int returnVal = jFileChooser.showSaveDialog(this); 
    			if (returnVal == JFileChooser.APPROVE_OPTION) { 
    				try{
    					ripristinaCondizioniIniziali();
    					file = jFileChooser.getSelectedFile(); 
    					Writer out = new FileWriter(file);
    					jTextArea.write(out);
    					setTitle(file.getName());
    				}catch(Exception e){
    					e.printStackTrace();
    				}
    
    			} 
    		} 
    	}	
    
    
    
    
    // PER AGGIUNGERE DEI FILTRI A UN FILE CHOOSER
    
    jFileChooser.addChoosableFileFilter(new TextFilter());
    jFileChooser.addChoosableFileFilter(new JavaCodeFilter());
    
    e le funzioni di filtro :
    
    abstract class SuffixAwareFilter 
    			extends javax.swing.filechooser.FileFilter {
    	  public String getSuffix(File f) {
    		String s = f.getPath(), suffix = null;
    		int i = s.lastIndexOf('.');
    
    		if(i > 0 && i < s.length() - 1)
    		  suffix = s.substring(i+1).toLowerCase();
    
    		return suffix;
    	  }
    	  public boolean accept(File f) {
    		return f.isDirectory();
    	  }
    	}
    	
    	class JavaCodeFilter extends SuffixAwareFilter {
    	  public boolean accept(File f) {
    		boolean accept = super.accept(f);
    
    		if( ! accept) {
    		  String suffix = getSuffix(f);
    
    		  if(suffix != null)
    			accept = super.accept(f) || suffix.equals("java");
    		}
    		return accept;
    	  }
    	  public String getDescription() {
    		return "Java Source Code Files(*.java)";
    	  }
    	}
    	class TextFilter extends SuffixAwareFilter {
    	  public boolean accept(File f) {
    		String suffix = getSuffix(f);
    
    		if(suffix != null)
    		  return super.accept(f) || suffix.equals("txt");
    
    		return false;
    	  }
    	  public String getDescription() {
    		return "Text Files(*.txt)";
    	  }
    	}
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    126
    Ciao morphy, grazie intanto,domanda:
    -MyFilter() che classe è?
    -Devo creare 2 classi una con
    getJFileChooser e l'altra con le funzioni di filtro o posso inserirle entrambe nello stessa classe principale?
    -Il seguente pezzo di codice:
    codice:
    // PER AGGIUNGERE DEI FILTRI A UN FILE CHOOSER
    
    jFileChooser.addChoosableFileFilter(new TextFilter());
    jFileChooser.addChoosableFileFilter(new JavaCodeFilter());
    dove lo piazzo?
    Ho provato a creare una classe di prova con main in modo da provarla stand-alone.
    Grazie ciao
    P.S.Hai avuto modo di vedere per i problemi che ti ho scritto due gg fa?(Grazie ancora per il supporto)

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    126
    Ok, grazei morphy, ho risolto.
    Fammi sapere anche privatamente se vuoi per il P.S. che ho molta urgenza.
    Grazie

  5. #5
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    ops... scusa mea culpa.... ho incollato troppa roba... no MyFilter lascialo stare... ti posto l'esempio già pronto che facciamo prima... non l'ho testato ma dovrebbe già andare... l'esempio riporta in un campo di testo il path del file gif o png che scegli...

    no per gli altri esempi che mi hai mandato purtroppo non ho ancora avuto il tempo... questa roba invece l'avevo già pronta...

    codice:
    public void caricaFile(JTextField fileOrigine){
    		JFileChooser jFileChooser = new JFileChooser();
    		jFileChooser.addChoosableFileFilter(new TextFilter());
    jFileChooser.addChoosableFileFilter(new JavaCodeFilter());
    
    
    		File file = new File("");
    
    		int returnVal = jFileChooser.showOpenDialog(this); 
    			if (returnVal == JFileChooser.APPROVE_OPTION) {  
    				try{
    					
    					jFileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
    					file = jFileChooser.getSelectedFile();
    					fileOrigine.setText(file.getPath());
    									}catch(Exception e){
    					e.printStackTrace();
    				}
    			} 
    
    	}
    
    
    
    
    
    abstract class SuffixAwareFilter 
    			extends javax.swing.filechooser.FileFilter {
    	  public String getSuffix(File f) {
    		String s = f.getPath(), suffix = null;
    		int i = s.lastIndexOf('.');
    
    		if(i > 0 && i < s.length() - 1)
    		  suffix = s.substring(i+1).toLowerCase();
    
    		return suffix;
    	  }
    	  public boolean accept(File f) {
    		return f.isDirectory();
    	  }
    	}
    	
    	class JavaCodeFilter extends SuffixAwareFilter {
    	  public boolean accept(File f) {
    		boolean accept = super.accept(f);
    
    		if( ! accept) {
    		  String suffix = getSuffix(f);
    
    		  if(suffix != null)
    			accept = super.accept(f) || suffix.equals("png");
    		}
    		return accept;
    	  }
    	  public String getDescription() {
    		return "Formato Png(*.png)";
    	  }
    	}
    	class TextFilter extends SuffixAwareFilter {
    	  public boolean accept(File f) {
    		String suffix = getSuffix(f);
    
    		if(suffix != null)
    		  return super.accept(f) || suffix.equals("gif");
    
    		return false;
    	  }
    	  public String getDescription() {
    		return "Formato Gif(*.gif)";
    	  }
    	}
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.