JFileChooser selecionando Pasta

Olá,

nas classes abaixo eu seleciono uma pasta, porém eu tenho que selecionar duas vezes para a pasta abrir. O que está acontecendo?

EscolhePasta.java

[code]import java.io.*;
import javax.swing.JFileChooser;

public class EscolhePasta {

public static String escolheArquivo(){ 
      
      String arquivoWave;    
      JFileChooser arquivo = new JFileChooser();    
      arquivo.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);  
      
      if(arquivo.showOpenDialog(arquivo) == JFileChooser.APPROVE_OPTION){ 
          arquivoWave = arquivo.getSelectedFile().getPath(); 
      }        
      
      else{ 
          arquivoWave = ""; 
          
      } 
      
      
      return arquivoWave; 
      } 


public static void main(String[] args){ 
   
  if(!escolheArquivo().equals("")){ 
      
     File arq = new File(escolheArquivo()); 

     File[] arquivos = arq.listFiles(new FiltroWave()); 
      
     for(int i=0;i<arquivos.length;i+=10){ 
        String s = arquivos[i].getName(); 
        s = s.substring(0,(s.length()-6)); 
        System.out.println(s); 

     } 
  } 

   
} 

}[/code]

FiltroWave.java

[code]import java.io.*;
class FiltroWave implements FilenameFilter{

  public boolean accept(File dir, String name) { 
     boolean a = name.endsWith(".wav") ; // método que realmente faz o trabalho :-P 
     
      return a; 
   
  } 

}[/code]

Olá thiagocs, bom dia,

da uma olhada nesse exemplo, pode ajudar vc… O programa abre uma janela JFileChooser e permite vc escolher uma imagem. A imagem selecionada é mostrada em um JLabel.


import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.beans.*;
import java.util.*;
import java.io.*;
import javax.swing.*;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileView;

public class FileChooserTeste {
	
	public static void main(String[] args) {
	
		ImageViewerFrame frame = new ImageViewerFrame();
		frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
		frame.setVisible( true );
		
	}

}

class ImageViewerFrame extends JFrame{
	
	public ImageViewerFrame(){
		
		setTitle("ImageViewerTeste");
		setSize( DEFAULT_WIDTH, DEFAULT_HEIGHT );
		
		JMenuBar menuBar = new JMenuBar();
		setJMenuBar( menuBar );
		
		JMenu menu = new JMenu("Open");
		menuBar.add( menu );
		
		JMenuItem openItem = new JMenuItem("Open");
		menu.add( openItem );
		openItem.addActionListener( new FileOpenListener() );
		
		JMenuItem exitItem = new JMenuItem("Exit");
		menu.add( exitItem );
		exitItem.addActionListener( new ActionListener(){
			public void actionPerformed( ActionEvent event ){
				System.exit(0);
			}
		});
		
		label = new JLabel();
		add( label );
		
		chooser = new JFileChooser();
		
		// definir extenções de imagens visiveis
		
		final ExtensionFileFilter filter = new ExtensionFileFilter();
		filter.addExtension("jpg");
		filter.addExtension("jpeg");
		filter.addExtension("gif");
		filter.setDescription("Image files");
		
		chooser.setFileFilter( filter );
		chooser.setAccessory( new ImagePreviewer(chooser));
		chooser.setFileView( new FileIconView( filter, new ImageIcon("palette.gif")));
		
	}
	
	private class FileOpenListener implements ActionListener{
		
		public void actionPerformed( ActionEvent event ){
			
			chooser.setCurrentDirectory( new File("."));
			
			int result = chooser.showOpenDialog( ImageViewerFrame.this );
			
			if( result == JFileChooser.APPROVE_OPTION )
			{
				String name = chooser.getSelectedFile().getPath();
				label.setIcon( new ImageIcon( name ));
			}
		}
	
	}
	
	private JLabel label;
	private JFileChooser chooser;
	
	public static final int DEFAULT_WIDTH = 300;
	public static final int DEFAULT_HEIGHT = 400;
}

class ExtensionFileFilter extends FileFilter{
	
	public void addExtension( String extension ){
		if( !extension.startsWith("."))
			extension = "." + extension;
		
		extensions.add( extension.toLowerCase() );
	}
	
	public void setDescription( String aDescription ){
		description = aDescription;
	}
	
	public String getDescription(){
		return description;
	}
	
	public boolean accept( File f ){
		
		if ( f.isDirectory() )
			return true;
		
		String name = f.getName().toLowerCase();
		
		for( String extension : extensions )
			if( name.endsWith(extension))
				return true;
		
		return false;
	}
	
	private String description = "";
	private ArrayList<String> extensions = new ArrayList<String>();
	
}

class FileIconView extends FileView{
	
	public FileIconView( FileFilter aFilter, Icon anIcon ){
		filter = aFilter;
		icon = anIcon;
	}
	
	public Icon getIcon( File f ){
		if( !f.isDirectory() && filter.accept(f) )
			return icon;
		else
			return null;
	}
	
	private FileFilter filter;
	private Icon icon;
	
}

class ImagePreviewer extends JLabel {
	
	public ImagePreviewer( JFileChooser chooser ){
		
		setPreferredSize( new Dimension( 100, 100 ) );
		setBorder( BorderFactory.createEtchedBorder() );
	
		chooser.addPropertyChangeListener( new PropertyChangeListener(){
			public void propertyChange( PropertyChangeEvent event ){
				
				if( event.getPropertyName() == JFileChooser.SELECTED_FILE_CHANGED_PROPERTY )
				{
					File f = ( File ) event.getNewValue();
					
					if ( f == null )
					{
						setIcon( null );
						return;
					}
					
					ImageIcon icon = new ImageIcon(f.getPath());
					
					if( icon.getIconWidth() > getWidth() )
						icon = new ImageIcon( icon.getImage().getScaledInstance( getWidth(), -1, Image.SCALE_DEFAULT ) );
					
					setIcon(icon);
				}
			}
		});
	}
}

é um exemplo completo para utilizar JFileChooser.

espero ter ajudado

atenciosamente

Muito bom funcionou, como em seguida, criar um botão que tenha o método de pegar a imagem do jPanel e gravar no Banco de Dados?

Valeu galera!

[quote=Jefries]Muito bom funcionou, como em seguida, criar um botão que tenha o método de pegar a imagem do jPanel e gravar no Banco de Dados?

Valeu galera![/quote]

Oi Jeffries, não ressuscite tópicos. É pouco provável que o pessoal lá de 2006 volte aqui para te ajudar. De qualquer forma, mesmo que volte, é sempre melhor abrir um tópico novo no GUJ, com o título mais adequado à sua dúvida, do que trazer das cinzas um muito velho.