Fehler beim Auslesen des Textes im textfield

Status
Nicht offen für weitere Antworten.

Schlumpf1980

Mitglied
Hallo Leute

Ich möchte das, sobald ich den Button (Submit) betätige das Jtextfield (Field1) ausgelesen und in die Variable username geschrieben wird. Das Problem ist, ich erhalte dabei eine riesige Fehlermeldung. Was ist falsch?

Code:
	JTextField Field1 = new JTextField("Username",20);
	Field1.setBounds(100,50,120,20);
	cp.add(Field1);

                JButton Submit = new JButton("Submit");	
	Submit.setBounds(100,120,80,20);
	cp.add(Submit);
	Submit.addActionListener( new ActionListener() {
        public void actionPerformed(ActionEvent e) {
          SubmitAction(e);
        }
      } );

public void SubmitAction (ActionEvent e) { 
	
	String username;
	
	username = Field1.getText();
	System.out.println(username);
}

Bitte um Hilfe... Freundliche Grüsse

Roger
 
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at einloggen.SubmitAction(einloggen.java:67)
at einloggen$1.actionPerformed(einloggen.java:30)
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.pumpOneEventForHierarchy(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)
 
Besten Dank für Deine Message. Was heisst initialisiert? Ich bin ein Java Anfänger... 🙂 Schmeiss nicht mit solchen Wörtern ;-) Ich präsentiere mal meinen ganzen Code, dann kannst Du mir ja sagen ob ich initialisiert habe, oder nicht. 🙂 Und was ich tun muss, wenn nicht.

Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;


public class einloggen extends JFrame implements ActionListener {
	 
	JButton Submit;
	JLabel Label1, Label2, Login;
	JTextField Field1; 
	JPasswordField Field2;
	

	public einloggen(){

	Container cp = getContentPane();
    cp.setLocation(100,100);
    cp.setSize(300,180);
	cp.setLayout(null);
		
	//	Button Objekt erstellen
	JButton Submit = new JButton("Submit");	
	Submit.setBounds(100,120,80,20);
	cp.add(Submit);
	Submit.addActionListener( new ActionListener() {
        public void actionPerformed(ActionEvent e) {
          SubmitAction(e);
        }
      } );
 
    
	//Label Objekt erstellen
    JLabel Login = new JLabel ("Login für Nomination NBP");
	Login.setBounds(10,10,150,15);
	cp.add(Login);
    
    JLabel Label1 = new JLabel ("Username:");
	Label1.setBounds(10,50,100,15);
	cp.add(Label1);
	
	JLabel Label2 = new JLabel ("Password:");
	Label2.setBounds(10,80,100,15);
    cp.add(Label2);
    
	//Textfelder Objekt erstellen
	JTextField Field1 = new JTextField("Username",20);
	Field1.setBounds(100,50,120,20);
	cp.add(Field1);
	
	JPasswordField Field2 = new JPasswordField("Passwort",20);
	Field2.setBounds(100,80,120,20);
	cp.add(Field2);
    
    
    	      
	      
}

	// implementiere die Methode fuer das Interface ActionListener 
public void SubmitAction (ActionEvent e) { 
	
	String username;
	
	username = Field1.getText();
	System.out.println(username);
}

	
	
	public static void main (String [] args) {
		
    	// Container erstellen und anzeigen
    	einloggen app = new einloggen();
        app.setTitle("NBP Test");
        app.show();
		
        
		
	}

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

	
}

Besten Dank

Schlumpf...
 
JTextField Field1 = new JTextField("Username",20);


das ist der Fehler:

Du hast oben deine Variablen deklariert. So die ist aber noch "leer"

Diese Var. sind in der Klasse global, dh. du kannst immer auf diese zugreifen (innerhalb deiner Klasse).

MAch das mal so: "Field1 = new JTextField("Username",20); "

Dann sollte es klappen!

Unten im code wo du durch getText() den text holen möchtest, verweist du auf die obige deklarierte Variable und NICHT auf die TextVariable in deiner action..Methode.

Einigermaßen verstanden!??

Bitte um Feedback

MFG
 
Hallo cradle...

das ganze funzt bei mir nicht... :-( Ich bekomme nun folgende Fehlermeldungen:

Exception in thread "main" java.lang.NullPointerException
at einloggen.<init>(einloggen.java:41)
at einloggen.main(einloggen.java:73)

Der Code sieht nun so aus:


Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;


public class einloggen extends JFrame implements ActionListener {
	 
	JButton Submit;
	JLabel Label1, Label2, Login;
	JPasswordField Field2;
    JTextField Field1 = new JTextField("Username",20);


	public einloggen(){

	Container cp = getContentPane();
    cp.setLocation(100,100);
    cp.setSize(300,180);
	cp.setLayout(null);
		
	//	Button Objekt erstellen
	JButton Submit = new JButton("Submit");	
	Submit.setBounds(100,120,80,20);
	cp.add(Submit);
	Submit.addActionListener( new ActionListener() {
        public void actionPerformed(ActionEvent e) {
          SubmitAction(e);
        }
      } );
 
    
	//Label Objekt erstellen
    JLabel Login = new JLabel ("Login für Nomination NBP");
	Login.setBounds(10,10,150,15);
	cp.add(Login);
    
    
	Label1.setBounds(10,50,100,15);
	cp.add(Label1);
	
	JLabel Label2 = new JLabel ("Password:");
	Label2.setBounds(10,80,100,15);
    cp.add(Label2);
    
	//Textfelder Objekt erstellen
	Field1.setBounds(100,50,120,20);
	cp.add(Field1);

	JPasswordField Field2 = new JPasswordField("Passwort",20);
	Field2.setBounds(100,80,120,20);
	cp.add(Field2);
     	      
	      
}

	// implementiere die Methode fuer das Interface ActionListener 
public void SubmitAction (ActionEvent e) { 
	
	String username;
	
	username = Field1.getText();
	System.out.println(username);
}

	
	
	public static void main (String [] args) {
		
    	// Container erstellen und anzeigen
    	einloggen app = new einloggen();
        app.setTitle("NBP Test");
        app.show();
		
        
		
	}

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

	
}

Freundliche Grüsse

Schlumpf
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben