# Jfilechooser filter



## Guest (21. Nov 2008)

hoi,

kann mir jemand sagen wie ich nen filter in meine funktion einbauen kann damit er mir nur jpg dateien anzeigt?
hab ewig rumprobiert mit den filefiltern aber irgendwie krieg ich das einfach so gar nicht gerafft.


```
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import java.io.*;
//import javax.swing.filechooser.FileFilter;

public class Choose extends JFrame
{
	//define containerelements
	JButton do  = new JButton("do");
	final JLabel statusbar = new JLabel("Select the jpg you want to import ");
	
	//Constructor
	public Choose()
	{	
		super("JFileChooser");
		createContents();
	}	
	
//	Initialize the contents of the frame
	private void createContents() {
	
		setSize(300,200);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
	
		Container c = getContentPane();
		c.setLayout(new FlowLayout());
	
		open.addActionListener(new OpenListener());
	
		c.add(statusbar);
		c.add(do);
	}
	
	
	class doListener implements ActionListener
	{
		public void actionPerformed(ActionEvent ae)
		{
			JFileChooser chooser = new JFileChooser();
			chooser.setMultiSelectionEnabled(true);
			int option = chooser.showOpenDialog(Choose.this);
			
			if(option == JFileChooser.APPROVE_OPTION)
			{
				File[] sf = chooser.getSelectedFiles();
				String filelist = "nothing";
						
				//if file selected: save its name into filelist
				if(sf.length>0)
					filelist = sf[0].getName();
						
				//go through the array of selectedfiles sf and write all entrys into filelist seperated by a ,
				for(int i=1;i<sf.length;i++)
				{
					filelist += ", " + sf[i].getName();
				}
				statusbar.setText("You've chonse " + filelist);
			}
			else
			{
				statusbar.setText("Nothing selected yet");
			}		
			
			
		}
	}
	public static void main(String[] args)
	{
		Choose f = new Choose();
		f.setVisible(true);
		f.setLocation(300,300);
	}
}
```


bitte kann mir jemand sagen wie ich hier einbringen kann dass er mir die anzeige eben nach jpg filtert?
das wäre einfach superlieb! ich kanns einfach nicht mehr sehen.. 

lg


----------



## Netscanner Waldi (21. Nov 2008)

Ich mach das immer so:

```
JFileChooser fch = new JFileChooser();
    	        fch.setAcceptAllFileFilterUsed(false);	        
            	        
    	        fch.setFileFilter( new FileFilter()
    	        {
    	            public boolean accept( File f ) 
    	            {
    	                 return f.isDirectory() || f.getName().toLowerCase().endsWith(".jpg");
    	            }
    
    	            public String getDescription() 
    	            {
    	                return "Image" + " (*.jpg)";
    	            }	    		
    	        });
            
    	        int returnVal = fch.showOpenDialog(null);
    	
    	        if(returnVal == JFileChooser.APPROVE_OPTION)
    	        {
    	            File file = fch.getSelectedFile();
    	            //do something
    	        }
```

@edit: Zeile 9 geändert 
	
	
	
	





```
return f.isDirectory() || f.getName().toLowerCase().endsWith(".jpg");
```


----------



## Guest (21. Nov 2008)

hm.. (???)

so? 

```
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import java.io.*;
//import javax.swing.filechooser.FileFilter;

public class Choose extends JFrame
{
   //define containerelements
   JButton do  = new JButton("do");
   final JLabel statusbar = new JLabel("Select the jpg you want to import ");
   
   //Constructor
   public Choose()
   {   
      super("JFileChooser");
      createContents();
   }   
   
//   Initialize the contents of the frame
   private void createContents() {
   
      setSize(300,200);
      setDefaultCloseOperation(EXIT_ON_CLOSE);
   
      Container c = getContentPane();
      c.setLayout(new FlowLayout());
   
      open.addActionListener(new OpenListener());
   
      c.add(statusbar);
      c.add(do);
   }
   
   
   class doListener implements ActionListener
   {
      public void actionPerformed(ActionEvent ae)
      {
         JFileChooser chooser = new JFileChooser();
         chooser.setMultiSelectionEnabled(true);
         int option = chooser.showOpenDialog(Choose.this);
         
         if(option == JFileChooser.APPROVE_OPTION)
         {
            File[] sf = chooser.getSelectedFiles();
            String filelist = "nothing";
                  
            //if file selected: save its name into filelist
            if(sf.length>0)
               filelist = sf[0].getName();
                  
            //go through the array of selectedfiles sf and write all entrys into filelist seperated by a ,
            for(int i=1;i<sf.length;i++)
            {
               filelist += ", " + sf[i].getName();
            }
            statusbar.setText("You've chonse " + filelist);
         }
         else
         {
            statusbar.setText("Nothing selected yet");
         }      
         
         
      }
   }
   public static void main(String[] args)
   {
      Choose f = new Choose();
      f.setVisible(true);
      f.setLocation(300,300);
      
      JFileChooser fch = new JFileChooser();
      fch.setAcceptAllFileFilterUsed(false);          
             
      fch.setFileFilter( new FileFilter()
      {
          public boolean accept( File f )
          {
              return f.getName().toLowerCase().endsWith(".jpg");
          }

          public String getDescription()
          {
              return "Image" + " (*.jpg)";
          }             
      });
  
      int returnVal = fch.showOpenDialog(null);

      if(returnVal == JFileChooser.APPROVE_OPTION)
      {
          File file = fch.getSelectedFile();
          //do something
      }
   }
}
```

falls ja gibt er mir in der zeile fch.setFileFilter( new FileFilter() die Fehlermeldung "the method setfilefilter(filefilter) in the type Jfilechooser is not applicable for the arguments (new Filefilter(){} )"


----------



## Guest (21. Nov 2008)

arg.. hab den import in kommentar ... *anschädelfass*

vielen dank nochmal


----------



## Guest (21. Nov 2008)

```
class OpenListener implements ActionListener
	{
		public void actionPerformed(ActionEvent ae)
		{
			//JfileChooser-filter for Csv files

			JFileChooser fch = new JFileChooser();
			fch.setMultiSelectionEnabled(true); 
			fch.setAcceptAllFileFilterUsed(false);          
		                      
			fch.setFileFilter( new FileFilter()
			{
				public boolean accept( File f )
				{
					return f.getName().toLowerCase().endsWith(".jpg");
				}
		   
				public String getDescription()
				{
					return " (*.csv)";
				}             
			});
		           
			int option = fch.showOpenDialog(null);
		       
			if(option == JFileChooser.APPROVE_OPTION)
			{
				File[] sf = fch.getSelectedFiles();
				String filelist = "nothing";
						
				//if file selected: save its name into filelist
				if(sf.length>0)
					filelist = sf[0].getName();
						
				//go through the array of selectedfiles sf and write all entrys into filelist seperated by a ,
				for(int i=1;i<sf.length;i++)
				{
					filelist += ", " + sf[i].getName();
				}
				statusbar.setText("You've chosen " + filelist);
			}
			else
			{
				statusbar.setText("Nothing selected yet");
			}}
```

Es zeigt zwar jetzt nur noch die jpg an aber keine unterverzeichnisse mehr.. was überseh ich ?
danke nochmal im voraus


----------



## Netscanner Waldi (21. Nov 2008)

Ah, was vergessen...

ändere mal in Zeile 16

```
return f.getName().toLowerCase().endsWith(".jpg");
```
in

```
return f.isDirectory() || f.getName().toLowerCase().endsWith(".jpg");
```

Jetzt sollte alles wie erwartet funktionieren


----------



## Guest (21. Nov 2008)

plz  help


----------



## L-ectron-X (21. Nov 2008)

Gehts immer noch nicht? Oder war das ein Spammer/Troll?


----------



## Guest (22. Nov 2008)

jupp .. ich probiers heut nachmittag aus wenn ich daheim bin dann geb ich bescheid


----------



## Guest (22. Nov 2008)

sweet funzt. danke vielmals


----------



## Guest (22. Nov 2008)

rein aus interesse: kann doch bestimmt auch noch einbauen dass er in der auswahl des Dateityps (ist ja jetzt auf jpg eingestellt) auch wieder umstellen kann auf "alle dateien anzeigen" oder so. wie würd ich denn da ran gehen?


----------

