Jfilechooser filter

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
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.

Code:
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
 
Ich mach das immer so:
Code:
    	        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
Code:
               return f.isDirectory() || f.getName().toLowerCase().endsWith(".jpg");
 
hm.. (???)

so?
Code:
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(){} )"
 
arg.. hab den import in kommentar ... *anschädelfass*

vielen dank nochmal 🙂
 
Code:
	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
 
Ah, was vergessen...

ändere mal in Zeile 16
Code:
               return f.getName().toLowerCase().endsWith(".jpg");
in
Code:
               return f.isDirectory() || f.getName().toLowerCase().endsWith(".jpg");

Jetzt sollte alles wie erwartet funktionieren 😉
 
jupp .. ich probiers heut nachmittag aus wenn ich daheim bin dann geb ich bescheid 🙂
 
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?
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben