# Exception in thread "AWT-EventQueue-0"



## memo1990 (17. Mai 2012)

Guten Morgen zusammen, heute ist wieder ein wunderbarer Tag, zumindest bei uns. 

Wie dem auch sei. Ich übe gerade mit Java :rtfm: und möchte als Übung ein Editor (Textverarbeitung) programmieren. Soweit so gut, bis hin auf, dass ich für das Menüpunkt "Datei öffnen ..." die Funktion geschrieben habe, immer eine Fehlermeldung im Terminal erscheint, die folgendermaßen lautet:


```
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at java.io.FileInputStream.<init>(FileInputStream.java:134)
	at java.io.FileInputStream.<init>(FileInputStream.java:97)
	at java.io.FileReader.<init>(FileReader.java:58)
	at GUI.ladeDatei(GUI.java:93)
	at GUI.actionPerformed(GUI.java:67)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
	at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833)
	at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877)
	at java.awt.Component.processMouseEvent(Component.java:6505)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3312)
	at java.awt.Component.processEvent(Component.java:6270)
	at java.awt.Container.processEvent(Container.java:2229)
	at java.awt.Component.dispatchEventImpl(Component.java:4861)
	at java.awt.Container.dispatchEventImpl(Container.java:2287)
	at java.awt.Component.dispatchEvent(Component.java:4687)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
	at java.awt.Container.dispatchEventImpl(Container.java:2273)
	at java.awt.Window.dispatchEventImpl(Window.java:2713)
	at java.awt.Component.dispatchEvent(Component.java:4687)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
	at java.awt.EventQueue.access$000(EventQueue.java:101)
	at java.awt.EventQueue$3.run(EventQueue.java:666)
	at java.awt.EventQueue$3.run(EventQueue.java:664)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.awt.EventQueue$4.run(EventQueue.java:680)
	at java.awt.EventQueue$4.run(EventQueue.java:678)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
```

Dies erscheint erst wenn ich die Funktion im Programm aufrufe.

Hier ist mein Quellcode:


```
public class Main {
	public static void main(String[] args) {		
		GUI fenster = new GUI("Editor");
		fenster.setSize(300, 300);
		fenster.setVisible(true);
	}
}
```


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

class GUI extends JFrame implements ActionListener {
	JMenuBar menuBar;
	JMenu menuDatei, menuBearbeiten, menuInfo;
	JMenuItem itemDateiOeffnen, itemDateiSpeichern, itemDateiBeenden;
	JMenuItem itemBearbeitenKopieren, itemBearbeitenAusschneiden, itemBearbeitenEinfuegen;
	JMenuItem itemInfoUeber;
	JTextArea textfeld;
	String dateiname;

	GUI(String titel) {
		super(titel);
		
		setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
		
		// Menüleiste hinzufügen
		menuBar = new JMenuBar();
		setJMenuBar(menuBar);
		
		// Menüeinträge zur Menüleiste hinzufügen
		menuDatei = new JMenu("Datei");
		menuBearbeiten = new JMenu("Bearbeiten");
		menuInfo = new JMenu("Info");
		menuBar.add(menuDatei);
		menuBar.add(menuBearbeiten);
		menuBar.add(menuInfo);
		
		// Items zu den Menüeinträgen hinzufügen
		itemDateiOeffnen = new JMenuItem("Datei öffnen ...");
		itemDateiSpeichern = new JMenuItem("Datei speichern ...");
		itemDateiBeenden = new JMenuItem("Beenden");
		itemBearbeitenKopieren = new JMenuItem("Kopieren");
		itemBearbeitenAusschneiden = new JMenuItem("Ausschneiden");
		itemBearbeitenEinfuegen = new JMenuItem("Einfügen");
		itemInfoUeber = new JMenuItem("Über ...");
		menuDatei.add(itemDateiOeffnen);
		menuDatei.add(itemDateiSpeichern);
		menuDatei.add(itemDateiBeenden);
		menuBearbeiten.add(itemBearbeitenKopieren);
		menuBearbeiten.add(itemBearbeitenAusschneiden);
		menuBearbeiten.add(itemBearbeitenEinfuegen);
		menuInfo.add(itemInfoUeber);
		
		// Items bei Listener anmelden
		itemDateiOeffnen.addActionListener(this);
		itemDateiBeenden.addActionListener(this);
		itemBearbeitenKopieren.addActionListener(this);
		itemBearbeitenAusschneiden.addActionListener(this);
		itemBearbeitenEinfuegen.addActionListener(this);
		itemInfoUeber.addActionListener(this);
		
		// Textfeld
		textfeld = new JTextArea(500, 100);
		JScrollPane scrollpane = new JScrollPane(textfeld);
		add(scrollpane);
	}
	
	public void actionPerformed(ActionEvent e) {
		Object o = e.getSource();
		
		if (o == itemDateiOeffnen)
			ladeDatei();
		if (o == itemDateiBeenden)
			System.exit(0);
		if (o == itemBearbeitenKopieren)
			textfeld.copy();
		if (o == itemBearbeitenAusschneiden)
			textfeld.cut();
		if (o == itemBearbeitenEinfuegen)
			textfeld.paste();
		if (o == itemInfoUeber)
			JOptionPane.showMessageDialog(this, "Name\nCopyright (r) 2012");
	}
	
	void ladeDatei() {
		// Dialog erstellen
		JFileChooser fileDialog = new JFileChooser();
		// Typ des Dialogs defenieren
		fileDialog.setDialogType(JFileChooser.OPEN_DIALOG);
		// Neuen Filter erstellen
		FileNameExtensionFilter filter = new FileNameExtensionFilter("Textdateien", "txt");
		// Den neu erstellen Filter zum Dialog hinzufügen.
		fileDialog.addChoosableFileFilter(filter);
		// Dialog anzeigen
		fileDialog.showOpenDialog(this);
		
		try {
			FileReader file = new FileReader(fileDialog.getName());
			BufferedReader reader = new BufferedReader(file);
			String readText = reader.readLine();
		
			while (readText != null) {
				textfeld.setText(readText);
				readText = reader.readLine();
			}
		} catch (IOException e) {
			System.err.println("Ein Fehler ist beim Lesen aufgetreten!");
		}
	}
}
```

Ich kann leider die Fehlermeldung nicht entschlüsseln. 

PS: Ich habe kein Präfix ausgewählt, da ich nicht wusste ob es ein Compiler- oder Interpreter-Fehler ist.


----------



## Marcinek (17. Mai 2012)

```
FileReader file = new FileReader(fileDialog.getName());
```

In Zeile 93 ist wohl null: 
	
	
	
	





```
fileDialog.getName()
```


----------



## Kevin94 (17. Mai 2012)

Es ist ein Logikfehler. Wenn man sich mal den Quellcode von FileInputStream anschaut (da wo die Exception fliegt), sieht man dass diese geworfen wird, wenn der übergebene Parameter null ist (obwohl das nicht in der API dokumentiert ist).
Naja, wie dem auch sei: Erstens verwendest du die falsche Methode (getName() gibt den Namen der Componente zurück was normalerweise null ist). Die richtige Methode wäre getSelectedFile(). Zweitens überprüfst du weder, ob die Rückgabe null ist noch ob das File existiert.


----------



## memo1990 (17. Mai 2012)

Danke, jetzt klappt es! :toll:


----------



## ary (21. Jan 2013)

ich habe einen ganz ähnlichen Fehler in meinem Programm, jedes mal wenn ich versuche eine action ausführen zu lassen, bekomme ich folgenden Fehler Code, wenn mir jemand sagen könnte, was ich falsch machen, währe ich ihm sehr verbunden: 

"Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at net.text_editor.src.Gui$1.actionPerformed(Gui.java:150)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
	at javax.swing.AbstractButton.doClick(AbstractButton.java:389)
	at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:809)
	at com.apple.laf.AquaMenuItemUI.doClick(AquaMenuItemUI.java:137)
	at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:850)
	at java.awt.Component.processMouseEvent(Component.java:6382)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3275)
	at java.awt.Component.processEvent(Component.java:6147)
	at java.awt.Container.processEvent(Container.java:2083)
	at java.awt.Component.dispatchEventImpl(Component.java:4744)
	at java.awt.Container.dispatchEventImpl(Container.java:2141)
	at java.awt.Component.dispatchEvent(Component.java:4572)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4619)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4280)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4210)
	at java.awt.Container.dispatchEventImpl(Container.java:2127)
	at java.awt.Window.dispatchEventImpl(Window.java:2489)
	at java.awt.Component.dispatchEvent(Component.java:4572)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:704)
	at java.awt.EventQueue.access$400(EventQueue.java:82)
	at java.awt.EventQueue$2.run(EventQueue.java:663)
	at java.awt.EventQueue$2.run(EventQueue.java:661)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
	at java.awt.EventQueue$3.run(EventQueue.java:677)
	at java.awt.EventQueue$3.run(EventQueue.java:675)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:674)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)"

hier der quellcode: 
"package net.text_editor.src;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Desktop.Action;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Frame;
import java.awt.HeadlessException;
import java.awt.MenuBar;
import java.awt.Panel;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.io.FileOutputStream;
import java.io.IOException;
import java.iutputStream;
import java.iutputStreamWriter;
import java.io.PrintWriter;
import java.io.Writer;

import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JTextPane;
import javax.swing.SwingUtilities;



public class Gui extends JFrame {

	private PrintWriter pw = null;
	private Writer wr = null;
	private OutputStream os = null;

	public Gui(String path, String encoding) throws IOException
		{
			os = new FileOutputStream(path);
			wr = new OutputStreamWriter(os, encoding);
			pw = new PrintWriter(wr);
		}



	public static void main(String[] args)
	{
		Gui frame = new Gui("Simple Writer");
		frame.setVisible(true);
	}

	/**
	 * @param title
	 * @throws HeadlessException
	 */
	public Gui(String title) throws HeadlessException
	{

		super(title);


		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


		//Editor

		Container cont = getContentPane();
		cont.setLayout(new BorderLayout());





		JTextArea txt = new JTextArea(25, 50);
		cont.add(txt, BorderLayout.CENTER);


		setJMenuBar(createMenuBar());
		pack();


	}

	//menu
		private JMenuBar createMenuBar()
		{
			JMenuBar bar = new JMenuBar();


			//file menu
			JMenu file = new JMenu("File");

			JMenuItem exit = new JMenuItem("exit");
			exit.setAction(actionExit);
			JMenuItem save = new JMenuItem("save");
			save.setAction(actionSave);

			file.add(save);
			file.add(exit);


			JMenu edit = new JMenu("edit");

			JMenu color = new JMenu("color");
			edit.add(color);

			JMenuItem clear = new JMenuItem("clear");
			clear.setAction(actionClear);
			JMenuItem red = new JMenuItem("red");
			red.setAction(actoinCRed);

			edit.add(clear);
			edit.add(color);

			color.add(red);


			bar.add(file);
			bar.add(edit);

			//return
			return bar;

		}

		private JTextArea txt = null;




		//Action

		//Clear
		private AbstractAction actionClear = new AbstractAction("Clear") {


			@Override
			public void actionPerformed(ActionEvent arg0) {
				txt.setText("");
			}
		};


		//color
		private AbstractAction actoinCRed = new AbstractAction("red")
		{
			public void actionPerformed(ActionEvent red)
			{
				txt.setForeground(Color.RED);
			}
		};

		//save
		private AbstractAction actionSave = new AbstractAction("save")
		{
			public void actionPerformed(ActionEvent save)
			{

				//	pw.printf("%s", txt);

			}
		};
		//exit
		private AbstractAction actionExit = new AbstractAction("exit")
		{
			public void actionPerformed(ActionEvent exit)
			{
				System.exit(0);
			}
		};




}
"


----------



## xehpuk (21. Jan 2013)

Bei 
	
	
	
	





```
JTextArea txt = new JTextArea(25, 50);
```
 ist 
	
	
	
	





```
txt
```
 eine Lokalvariable und nicht die Instanzvariable.


----------



## ary (21. Jan 2013)

aha, könnten sie mir bitte auch sagen, wie ich das beheben kann?  da ich noch nicht sehr lange mit java arbeite, kann ich aus dieser Antwort nicht ersehen wie ich den Fehler beheben kann


----------



## ary (21. Jan 2013)

oh, jetzt hab ich es, danke für den Hinweis


----------

