# Mehrer Dateien auswählen mit JFileChooser



## Guest (12. Apr 2007)

hallo,

Ich bin dabei ein signiertes Applet zu programmieren, welches mehrer Bilder von der Festplatte auswählen soll.
Das klappt auch soweit.

Nur würde ich gerne mehrer Bilder auswählen und ich weiß nicht wie ich MULTI_SELECTION_ENABLED_CHANGED_PROPERTY einsetzten kann damit ich mehrere Datein auswählen kann ?


```
import java.awt.*;
import java.applet.Applet;
import javax.swing.JFileChooser;
import java.awt.event.*;

public class FChooserButton
extends Applet
implements ActionListener{

	Button open;
	Button upload;
	JFileChooser chooser;

	public void init(){
		open=new Button("open");
		upload=new Button("upload");
		add(open);
		add(upload);
		open.addActionListener(this);
		upload.addActionListener(this);
		chooser=new JFileChooser();
		//chooser.MULTI_SELECTION_ENABLED_CHANGED_PROPERTY=true;
		//JFileChooser.MULTI_SELECTION_ENABLED_CHANGED_PROPERTY=true;

		//File Filter
		/*
		ExampleFileFilter filter=new ExampleFileFilter();
		filter.addExtension("jpg");
		filter.addExtension("gif");
		filter.setDescription("Jpg + Gif Files only");
		chooser.setFileFilter(filter);
		*/
	}

	public void actionPerformed(ActionEvent evt){
		//OPEN
		if(evt.getSource()==open){
			int returnVal=chooser.showOpenDialog(this);
			//PRINT SELECTION
			if(returnVal==JFileChooser.APPROVE_OPTION){
				//NAME der datei
				System.out.println("folgende datei wurde gewaehlt: "+chooser.getSelectedFile().getName());
				//PFAD der datei
				System.out.println("dateipfad: "+chooser.getSelectedFile().getPath());
			}
		}
		//UPLOAD
		if(evt.getSource()==upload){
			//upload
		}
	}

}
```


----------



## The_S (12. Apr 2007)

JFileChooser#setMultiSelectionEnabled


----------



## Guest (12. Apr 2007)

ok danke

und ich würde gern noch einen File filter einbauen.

welches paket muß ich dazu importieren oder welche klasse extenden ?


```
public void init(){
		open=new Button("open");
		upload=new Button("upload");
		add(open);
		add(upload);
		open.addActionListener(this);
		upload.addActionListener(this);
		chooser=new JFileChooser();
		chooser.setMultiSelectionEnabled(true);

		//File Filter
		ExampleFileFilter filter=new ExampleFileFilter();
		filter.addExtension("jpg");
		filter.addExtension("gif");
		filter.setDescription("Jpg + Gif Files only");
		chooser.setFileFilter(filter);
	}
```

========================================
FChooserButton.java:26: cannot find symbol
symbol  : class ExampleFileFilter
location: class FChooserButton
                ExampleFileFilter filter=new ExampleFileFilter();
                ^
FChooserButton.java:26: cannot find symbol
symbol  : class ExampleFileFilter
location: class FChooserButton
                ExampleFileFilter filter=new ExampleFileFilter();
                                             ^
2 errors
========================================


----------



## The_S (12. Apr 2007)

javax.swing.filechooser.FileFilter


----------



## Verjigorm (12. Apr 2007)

```
JFileChooser fc = new JFileChooser();

    fc.setFileFilter( new FileFilter()
    {
      public boolean accept( File f ) {
        return f.isDirectory() ||
               f.getName().toLowerCase().endsWith( ".txt" );
      }
      public String getDescription() {
        return "Texte";
      }
    } );
```


----------



## Guest (13. Apr 2007)

wenn ich den FileFilter einbaue erhalte ich 2 class files:

- FChooserButton.class
- FChooserButton$1.class

woher kommt das 2. mit dem $1 zeichen ?

```
chooser.setFileFilter( new FileFilter(){
		    public boolean accept( File f ) {
        		return f.isDirectory() ||
            	f.getName().toLowerCase().endsWith( ".jpg" );
      		}
      		public String getDescription() {
        		return "Texte";
      		}
});
```
Außerdem funtz das Applet nicht mehr.

diese $1 scheint probleme mit dem signieren zu machen

========================
java.lang.SecurityException: class "FChooserButton$1"'s signer information does not match signer information of other classes in the same package
	at java.lang.ClassLoader.checkCerts(ClassLoader.java:775)
	at java.lang.ClassLoader.preDefineClass(ClassLoader.java:487)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:614)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
	at sun.applet.AppletClassLoader.findClass(AppletClassLoader.java:163)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
	at sun.applet.AppletClassLoader.loadClass(AppletClassLoader.java:119)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
	at java.lang.Class.getDeclaredConstructors0(Native Method)
	at java.lang.Class.privateGetDeclaredConstructors(Class.java:2328)
	at java.lang.Class.getConstructor0(Class.java:2640)
	at java.lang.Class.newInstance0(Class.java:321)
	at java.lang.Class.newInstance(Class.java:303)
	at sun.applet.AppletPanel.createApplet(AppletPanel.java:721)
	at sun.plugin.AppletViewer.createApplet(AppletViewer.java:1826)
	at jep.AppletFramePanel.createApplet(AppletFramePanel.java:187)
	at sun.applet.AppletPanel.runLoader(AppletPanel.java:650)
	at sun.applet.AppletPanel.run(AppletPanel.java:324)
	at jep.AppletFramePanel.run(AppletFramePanel.java:175)
	at java.lang.Thread.run(Thread.java:613)
===========================


----------



## The_S (13. Apr 2007)

das $1 kommt durch die anonyme innere Klasse. Kannst den FileFilter in ner anderen Klasse auslagern, dann haste zwei "normale" Klassen.


----------

