# JFilechooser File auslesen



## noisebreath (26. Nov 2008)

Hi ich hab den Filechooser geschrieben aber irgendwie komm ich nicht an die ausgewählte datei ran:


```
if(option == JFileChooser.APPROVE_OPTION)
			{
		                    File[] sf = fch.getSelectedFiles();
			    String filelist = "nothing";
			    
			    if(sf.length>0)
			    	filelist = sf[0].getName();
			    
			    //System.out.print(sf[0].getName());
			    for(int i=1;i<sf.length;i++)
			    {
			    	filelist += "," + sf[i].getName();
			    }
			    statusbar.setText(filelist);
			}
			else
			{
				statusbar.setText("Sie haben abgebrochen.");
			}
		}
```

*schulterzuck* ne idee was ich falsch mach?


----------



## Verjigorm (26. Nov 2008)

Willst du eine oder mehrere Dateien?
Du schreib "die datei"

Es gibt auch getSelectedFile() ohne s


----------



## noisebreath (27. Nov 2008)

im moment will ich nur eine einlesen, aber ich verstehe einfach trotzdem nicht warum er mir das so wie es hier ist nicht macht :-/ (????)


----------



## noisebreath (27. Nov 2008)

im moment will ich nur eine einlesen, aber ich verstehe einfach trotzdem nicht warum er mir das so wie es hier ist nicht macht :-/ (????)


----------



## noisebreath (27. Nov 2008)

habs jetzt mit getselectedfile gemacht..egal


----------



## Capasso (27. Nov 2008)

noisebreath hat gesagt.:
			
		

> im moment will ich nur eine einlesen, aber ich verstehe einfach trotzdem nicht warum er mir das so wie es hier ist nicht macht :-/ (????)



Aus der java API

public File[] getSelectedFiles()
//Returns a list of selected files if the file chooser is set to allow multiple selection.

Also musst du auf MultipleSelectionMode stellen


```
setMultiSelectionEnabled(boolean b)
```


----------



## noisebreath (27. Nov 2008)

aaaahhhh .. danke ^^


----------



## Guest (28. Nov 2008)

mittlerweile spuckt er mir ne neue fehlermeldung aus die ich nicht einordnen kann..


```
import java.awt.event.*;
import java.awt.*;

import javax.swing.*;

import java.io.*;

import javax.swing.border.EmptyBorder;
import javax.swing.filechooser.FileFilter;

public class ChooseJpgFile extends JPanel {
	
	//define containerelements
    private JLabel blankSpace;
    private JLabel blankSpace2;
	private JButton open;
	private JLabel statusbar;
	private JLabel label;
	private JPanel contentPanel;
	private JPanel datei;
	private JTextField tfeld;
	
	//Constructor
	public ChooseJpgFile()
	{	
		contentPanel = getContentPanel();
        contentPanel.setBorder(new EmptyBorder(new Insets(10, 10, 10, 10)));

        setLayout(new BorderLayout());
        setSize(300,300);
        add(contentPanel, BorderLayout.NORTH);
	}	
	
//	Initialize the contents of the frame
	private JPanel getContentPanel() {
		
		JLabel blankSpace = new JLabel();
		JLabel blankSpace2 = new JLabel();
		JPanel contentPanel = new JPanel();
		JPanel jPanel = new JPanel();
		JLabel label = new JLabel();
		JPanel datei = new JPanel();
		JLabel statusbar = new JLabel("Wählen Sie die jpg-Datei aus");
		JButton open = new JButton("Durchsuchen");
		JTextField tfeld = new JTextField("(Datei)");
		tfeld.setHorizontalAlignment(SwingConstants.CENTER);
	
		contentPanel.setLayout(new BorderLayout());
		open.addActionListener(new OpenListener());
	
		jPanel.setLayout(new GridLayout(4,0));
		jPanel.add(statusbar);
		jPanel.add(blankSpace);
		jPanel.add(blankSpace2);
		jPanel.add(label);
		jPanel.add(tfeld);
		jPanel.add(open);
		jPanel.add(datei);
		contentPanel.add(jPanel, BorderLayout.CENTER);
		return contentPanel;
		
	}
	class OpenListener implements ActionListener
	{
		public void actionPerformed(ActionEvent ae)
		{
			//JfileChooser-filter for jpg files

			JFileChooser fch = new JFileChooser();
			//fch.setMultiSelectionEnabled(false); 
			//fch.setAcceptAllFileFilterUsed(false); 
			
			//Add Elements to the Dropdown-Datatype-selection
			fch.addChoosableFileFilter(new FileFilter()
			{
				public boolean accept( File f )
				{
					return true;
				}
				public String getDescription()
				{
					return " .*";
				}             
			});
		                      
			fch.addChoosableFileFilter( new FileFilter()
			{
				public boolean accept( File f )
				{
					return f.isDirectory() || f.getName().toLowerCase().endsWith(".jpg");
				}
				public String getDescription()
				{
					return " (*.jpg)";
				}             
			});
			 
			int option = fch.showOpenDialog(null);
		       
			if(option == JFileChooser.APPROVE_OPTION)
			{
				File sf = fch.getSelectedFile();
			    String filelist = "nothing";
			    //String[] s = sf.getAbsolutePath().split(".");
			    System.out.println("a");
			    if(sf.exists()){
			    	filelist = sf.getName();
			    	System.out.println("b");
			    }
			    statusbar.setText("Sie haben " + filelist + " gewählt.");
			}
			else
			{
				System.out.println("c");
				statusbar.setText("Sie haben abgebrochen.");
			}
		}
	}
}
```

Fehlercode wird nach der Auswahl der datei geschmissen:

zeile 111:  statusbar.setText("Sie haben " + filelist + " gewählt.");


Exception occurred during event dispatching:
java.lang.NullPointerException
	at ChooseCsvFile$OpenListener.actionPerformed(ChooseJPGFile.java:111)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.Dialog$1.run(Unknown Source)
	at java.awt.event.InvocationEvent.dispatch(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)


----------



## Verjigorm (28. Nov 2008)

Statusbar ist bei dir nicht initialisiert (null)

Du legst zwar ein Statusbar an, das ist aber eine lokale Variable, die Klassenvariable, auf die du zugreifst ist nicht initalisiert.


----------



## Guest (28. Nov 2008)

wieso? zeile 44 mach ich das doch oder nicht?

JLabel statusbar = new JLabel("Wählen Sie die jpg-Datei aus"); 

..


----------



## Guest (28. Nov 2008)

asoooooooooo *ankoppfass* jetzt seh ichs  danke


----------

