Kann sich jemand mal folgenden Code anschauen ich finde einfach nicht den Fehler ...


fm it

Mitglied
Code:
package Userpackage;

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.Scanner;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import javax.swing.JTextField;


public class Layouttest extends JFrame {
	
	Scanner s;
	JLabel Vorname1;
	JLabel Nachname1;
	JLabel Email1;
	JButton button;
	JButton neuerNutzer;
	JTextField Vorname;
	JTextField Nachname;
	JTextField Email;
	String Vorname3;
	String Nachname3;
	String Email3;
	JTextArea text;
		

Layouttest (){

setVisible(true);
setSize(1000,900);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocation(0,0);
setTitle("Wiedergabe");







Listener ul = new Listener();
FileReadWriteExample lu = new FileReadWriteExample();




Vorname1  = new JLabel ("Vorname:");
Vorname1.setBounds(10, 0, 500, 60);
Font schrift = new Font(null, Font.PLAIN + Font.ITALIC, 20);
Vorname1.setFont(schrift);	
add(Vorname1);

Vorname = new JTextField();
Vorname.setBounds(125, 20 ,200,25);
Vorname.setToolTipText("Vorname");
add (Vorname);	


Nachname1  = new JLabel ("Nachname:");
Nachname1.setBounds(10, 40, 500, 60);
Font schrift1 = new Font(null, Font.PLAIN + Font.ITALIC,20);
Nachname1.setFont(schrift1);	
add(Nachname1);

Nachname = new JTextField();
Nachname.setBounds(125, 60 ,200,25);
Nachname.setToolTipText("Nachname");
add (Nachname);	

Email1  = new JLabel ("Email:");
Email1.setBounds(10, 80, 500, 60);
Font schrift2 = new Font(null, Font.PLAIN + Font.ITALIC, 20);
Email1.setFont(schrift2);	
add(Email1);

Email = new JTextField();
Email.setBounds(125, 100 ,200,25);
Email.setToolTipText("Email");
add (Email);

button = new JButton ("Datenbank aktualisieren");
button.setBounds(175, 150 ,200,25);
button.addActionListener(lu);
button.setEnabled(true);
button.setToolTipText("Datenbank aktualisieren");
add (button);

neuerNutzer = new JButton ("Neuer Nutzer");
neuerNutzer.setBounds(10, 150 ,150,25);
neuerNutzer.addActionListener(ul);
neuerNutzer.setEnabled(true);
neuerNutzer.setToolTipText("Neuen Nutzer erstellen");
add (neuerNutzer);


text = new JTextArea ();
text.setLineWrap(true);
text.setWrapStyleWord(true);
text.setOpaque(false);
add(text);

}
		
		
private class Listener implements ActionListener {
    	
		
		
        @Override
    	public void actionPerformed(ActionEvent e) {
    		// TODO Auto-generated method stub
    		if(e.getSource()== neuerNutzer){
    			String Vorname2 = Vorname.getText();
    			String Nachname2 = Nachname.getText();
    			String Email2 = Email.getText();
    		
    	        	        
    	        File file = new File("C:/Users/Finn/Desktop/Datenbank.txt");{
    	   	     try {
    	   	    	 
    	   	    	
    	   	      
    	   	       OutputStreamWriter writer = new FileWriter(file ,true);
    	   	       
    	   	     	   	       
    	   	    
    	   	       writer.write("Vorname: " + Vorname2);
    	   	       
    	   	       
    	   	       writer.write(System.getProperty("line.separator"));

    	   	      
    	   	       writer.write("Nachname: " + Nachname2);
    	   	       
    	   	       writer.write(System.getProperty("line.separator"));

    	   		      
    	   	       writer.write("Email: "+Email2);
    	   	       writer.write(System.getProperty("line.separator"));
    	   	       writer.write(System.getProperty("line.separator"));
    	   	    Vorname.setText("");
    	   	    Nachname.setText("");
    	   	    Email.setText("");
    	   	    
    	   	       
    	   	       writer.close();
    	   	    } catch (IOException e1) {
    	   	      e1.printStackTrace(); }}}}}


public class FileReadWriteExample implements ActionListener {



{
	try {
		BufferedReader in = new BufferedReader(new FileReader("C:/Users/Finn/Desktop/Datenbank.txt"));
		String zeile = null;
		while ((zeile = in.readLine()) != null) {
			 text.setText("" + zeile);
			
		}
	} catch (IOException e) {
		e.printStackTrace();
	}
}

@Override
public void actionPerformed(ActionEvent arg0) {
	// TODO Auto-generated method stub
	
}

}






}
 

Bratkartoffel

gebratene Kartoffel
Premium-User
Hi,

also eine Beschreibung wäre schon auch nett.

- Was funktioniert nicht?
- Wie sollte es ausschauen?
- Wie schaut es aus?
- Was hast du bereits versucht anzupassen / wo hast du schon rumgespielt?

Ach ja, es gibt auch noch die [code=java]...[/code] Tags hier, die machen den Java-Code durch Syntaxhighlightning lesbarer.

Java:
package Userpackage;

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.Scanner;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class Layouttest extends JFrame {

	Scanner s;
	JLabel Vorname1;
	JLabel Nachname1;
	JLabel Email1;
	JButton button;
	JButton neuerNutzer;
	JTextField Vorname;
	JTextField Nachname;
	JTextField Email;
	String Vorname3;
	String Nachname3;
	String Email3;
	JTextArea text;

	Layouttest() {

		setVisible(true);
		setSize(1000, 900);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setLocation(0, 0);
		setTitle("Wiedergabe");

		Listener ul = new Listener();
		FileReadWriteExample lu = new FileReadWriteExample();

		Vorname1 = new JLabel("Vorname:");
		Vorname1.setBounds(10, 0, 500, 60);
		Font schrift = new Font(null, Font.PLAIN + Font.ITALIC, 20);
		Vorname1.setFont(schrift);
		add(Vorname1);

		Vorname = new JTextField();
		Vorname.setBounds(125, 20, 200, 25);
		Vorname.setToolTipText("Vorname");
		add(Vorname);

		Nachname1 = new JLabel("Nachname:");
		Nachname1.setBounds(10, 40, 500, 60);
		Font schrift1 = new Font(null, Font.PLAIN + Font.ITALIC, 20);
		Nachname1.setFont(schrift1);
		add(Nachname1);

		Nachname = new JTextField();
		Nachname.setBounds(125, 60, 200, 25);
		Nachname.setToolTipText("Nachname");
		add(Nachname);

		Email1 = new JLabel("Email:");
		Email1.setBounds(10, 80, 500, 60);
		Font schrift2 = new Font(null, Font.PLAIN + Font.ITALIC, 20);
		Email1.setFont(schrift2);
		add(Email1);

		Email = new JTextField();
		Email.setBounds(125, 100, 200, 25);
		Email.setToolTipText("Email");
		add(Email);

		button = new JButton("Datenbank aktualisieren");
		button.setBounds(175, 150, 200, 25);
		button.addActionListener(lu);
		button.setEnabled(true);
		button.setToolTipText("Datenbank aktualisieren");
		add(button);

		neuerNutzer = new JButton("Neuer Nutzer");
		neuerNutzer.setBounds(10, 150, 150, 25);
		neuerNutzer.addActionListener(ul);
		neuerNutzer.setEnabled(true);
		neuerNutzer.setToolTipText("Neuen Nutzer erstellen");
		add(neuerNutzer);

		text = new JTextArea();
		text.setLineWrap(true);
		text.setWrapStyleWord(true);
		text.setOpaque(false);
		add(text);

	}

	private class Listener implements ActionListener {

		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			if (e.getSource() == neuerNutzer) {
				String Vorname2 = Vorname.getText();
				String Nachname2 = Nachname.getText();
				String Email2 = Email.getText();

				File file = new File("C:/Users/Finn/Desktop/Datenbank.txt");
				try {

					OutputStreamWriter writer = new FileWriter(file, true);

					writer.write("Vorname: " + Vorname2);

					writer.write(System.getProperty("line.separator"));

					writer.write("Nachname: " + Nachname2);

					writer.write(System.getProperty("line.separator"));

					writer.write("Email: " + Email2);
					writer.write(System.getProperty("line.separator"));
					writer.write(System.getProperty("line.separator"));
					Vorname.setText("");
					Nachname.setText("");
					Email.setText("");

					writer.close();
				} catch (IOException e1) {
					e1.printStackTrace();
				}
			}
		}
	}

	public class FileReadWriteExample implements ActionListener {

		{
			try {
				BufferedReader in = new BufferedReader(new FileReader(
						"C:/Users/Finn/Desktop/Datenbank.txt"));
				String zeile = null;
				while ((zeile = in.readLine()) != null) {
					text.setText("" + zeile);

				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

		@Override
		public void actionPerformed(ActionEvent arg0) {
			// TODO Auto-generated method stub
		}
	}
}

Habe den Code auch mal ein bisschen um-formatieren lassen, ich schau ihn mir mal an.

Grüße,
BK
 
Zuletzt bearbeitet:

fm it

Mitglied
Also ich will Nutzerdaten in ein Textdokument schreiben und das dann wieder ausgeben. Das Schreiben klappt aber das auslesen nicht. In der Console stehen immer Fehlermeldungen. Ich kenne nur diese Methode zum auslesen desswegen konnte ich nicht wirklich ausprobieren...
 

Bratkartoffel

gebratene Kartoffel
Premium-User
Hi,

meinst du nicht dass die Fehlermeldung eventuell nützliche Informationen für uns hier enthalten könnten? ;-)

Bitte hier posten :)

Grüße,
BK
 

fm it

Mitglied
Ach ja hab ich vergessen...
Code:
Exception in thread "main" java.lang.NullPointerException
	at Userpackage.Layouttest$FileReadWriteExample.<init>(Layouttest.java:176)
	at Userpackage.Layouttest.<init>(Layouttest.java:53)
	at Userpackage.test.main(test.java:8)
 

Bratkartoffel

gebratene Kartoffel
Premium-User
Hi,

der Quelltext den du hier gepostet hast ist nicht vollständig, passt also nicht mit der Fehlermeldung zusammen.

Bitte poste zumindest was in Zeile 176 steht und am Besten noch 5-6 Zeilen davor.

Ich würd mal schwer darauf tippen, dass es folgende Zeile ist:
Java:
text.setText("" + zeile);
An der Stelle ist text anscheinend noch null.

Dies liegt daran, dass du im Konstruktor von Layouttest() in Zeile 45 eine neue Instanz von FileReadWriteExample erstellst. Wenn diese initialisiert wird, ist text darin noch null. text wird erst später initialisiert (Zeile 94).

Grüße,
BK
 
Zuletzt bearbeitet:

fm it

Mitglied
Java:
private class Listener implements ActionListener {
    	
		
		
        @Override
    	public void actionPerformed(ActionEvent e) {
    		// TODO Auto-generated method stub
    		if(e.getSource()== neuerNutzer){
    			String Vorname2 = Vorname.getText();
    			String Nachname2 = Nachname.getText();
    			String Email2 = Email.getText();
    		
    	        	        
    	        File file = new File("C:/Users/Finn/Desktop/Datenbank.txt");{
    	   	     try {
    	   	    	 
    	   	    	
    	   	      
    	   	       OutputStreamWriter writer = new FileWriter(file ,true);
    	   	       
    	   	     	   	       
    	   	    
    	   	       writer.write("Vorname: " + Vorname2);
    	   	       
    	   	       
    	   	       writer.write(System.getProperty("line.separator"));

    	   	      
    	   	       writer.write("Nachname: " + Nachname2);
    	   	       
    	   	       writer.write(System.getProperty("line.separator"));

    	   		      
    	   	       writer.write("Email: "+Email2);
    	   	       writer.write(System.getProperty("line.separator"));
    	   	       writer.write(System.getProperty("line.separator"));
    	   	    Vorname.setText("");
    	   	    Nachname.setText("");
    	   	    Email.setText("");
    	   	    
    	   	       
    	   	       writer.close();
    	   	    } catch (IOException e1) {
    	   	      e1.printStackTrace(); }}}}}


public class FileReadWriteExample implements ActionListener {



{
	try {
		BufferedReader in = new BufferedReader(new FileReader("C:/Users/Finn/Desktop/Datenbank.txt"));
		String zeile = null;
		while ((zeile = in.readLine()) != null) {
			text.setText("" + zeile);
			
		}
	} catch (IOException e) {
		e.printStackTrace();
	}
}

@Override
public void actionPerformed(ActionEvent arg0) {
	// TODO Auto-generated method stub
	
}

}






}

das war gemeint oder ?
und davor meiner meinung nach nix.
 
Zuletzt bearbeitet:

Bratkartoffel

gebratene Kartoffel
Premium-User
Hi,

bitte lass dir doch nicht alles aus der Nase ziehen... Im Stacktrace ist die Rede von Zeile 176 (Layouttest.java:176)... Hellsehen können wir auch nicht was dort steht...

Grüße,
BK
 

Bratkartoffel

gebratene Kartoffel
Premium-User
Siehe
http://www.tutorials.de/java/386526...nde-einfach-nicht-den-fehler.html#post1999493.

Ich würd mal schwer darauf tippen, dass es folgende Zeile ist:
Java:
text.setText("" + zeile);
An der Stelle ist text anscheinend noch null.

Dies liegt daran, dass du im Konstruktor von Layouttest() in Zeile 45 eine neue Instanz von FileReadWriteExample erstellst. Wenn diese initialisiert wird, ist text darin noch null. text wird erst später initialisiert (Zeile 94).

Grüße,
BK
 

fm it

Mitglied
und was genau muss ich jetzt veränder ? :DD
sry. versteh das echt nicht :DF

antworten ausgeschlossen ? :D
 
Zuletzt bearbeitet von einem Moderator:

sheel

I love Asm
Du solltest dir sehr dringend Grundlagen aneignen.
Einfacher kann als Bratkartoffel ich es auch nicht erklären.

Wenn du ein "new Layouttest()" machst wird zuerst mal der KonstruktorLayouttest() aufgerufen.
Der wird Zeile für Zeile von oben nach unten abgearbeitet.

Eine Zeile von Layouttest() ist
Java:
FileReadWriteExample lu = new FileReadWriteExample();
Da wird uA. der Konstruktor FileReadWriteExample() ausgeführt, komplett,
bevor es in Layouttest() weiter geht.

Später in Layouttest hast du noch ein
Java:
text = new JTextArea();
Erst nach FileReadWriteExample()
Dieses verwendet text aber schon, das es zu dem Zeitpunkt noch gar nicht gibt.

Lösung: Reihenfolge ändern.
Zuerst text machen, dann FileReadWriteExample.

Und bitte keine Push-/Doppelposts.
 

sheel

I love Asm
Bist du sicher, dass es nicht die letzte Zeile ist?

Dieser Code im FileReadWriteExample
Java:
String zeile = null;
while ((zeile = in.readLine()) != null) {
    text.setText("" + zeile);
}
Liest eine Zeile, rein ins text,
liest die nächste Zeile, rein ins text:
dabei wird er alte Inhalt überschrieben.
Am Schluss überschreibt die letzte Zeile die Vorletzte.

Das ""+ ist übrigens überflüssig.

Lösung: += statt =
 

Forum-Statistiken

Themen
272.351
Beiträge
1.558.596
Mitglieder
187.824
Neuestes Mitglied
Danke!