Problem mit String von Textfeld

Java3312

Mitglied
Hallo,
Ich möchte den Inhalt von einem String von einem Textfeld bekommen. D.h. ich möchte das wenn jemand etwas in das Textfeld schreibt bekommt der String dessen inhalt. Das Problem ist das wenn ich den String ausführen möchte, dann steht da immer "null". Woran liegt das ? Was kann man machen um das zu ändern ?
 
wie hast du das gemacht?
Bsp:
Java:
@Override
	 public void actionPerformed(ActionEvent e) {
	 	 String str = eingabeFeld.getText();
	 	 System.out.println(str);
	 }
also so klappt sollte es funktionierren 🙂
 
Ja das habe ich auch versucht, aber was ist an dem Code falsch ?
Java:
package mypack;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class StringfromTextFiedl {
	
	static String S;

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		JFrame H = new JFrame();
		H.setVisible(true);
		H.setBounds(100,100,100,100);
		
		final JTextField T = new JTextField();
		T.setVisible(true);
		T.setBounds(100,100,100,100); 
		
		T.addActionListener(new ActionListener(){
			   @Override
			   public void actionPerformed(ActionEvent ae){
				    S = T.getText();
			   }
		   });
					
		H.add(T);
	
	    System.out.println(S);
	    }

}
 
Mal davon abgesehen, dass du Bezeichner mit nur einem Großbuchstaben (hier S und T) besser nur für Typvariablen benutzen solltest und das Design grottig ist: Schieb mal das
Code:
System.out.println(S);
genau hinter Zeile 29.

Ark
 
Ich habe jetzt versucht den ersten Code auf meinen anderen Code umzusetzen.
Hier zeigt er jedoch auch null an, wenn ich versuche den String auszugeneben. Hier ein Ausschnitt von de Code (Eingabe : TextFeld)
Java:
 Eingabe.addActionListener(new ActionListener(){
          
          public String b;
			
			public void Form1 (String a){
				b = a;}
			public void seta(String a){
				b = a;}
			 public String geta() {
				   	return b ; 
				   	
				   }
			   public void saying () {	
				  a = Eingabe.getText();		  
				  
				    {
				    	
				   }	

					}{
						  
		}
	       @Override
		   public void actionPerformed(ActionEvent ae){
           System.out.println(a);
		}
			
		   
	   });
Es ist deswegen so "komisch " geschrieben, weil ich den String "a" ,den ich über der Methode mit "static String a;" deklariert habe, in einer anderen Klasse benötige.
 
A wird nirgentwo belegt, wieso soll da nun was anderes, als NULL rauskommen?

Etwas static zu machen um es in einer andern "klasse" nutzen zu können, ist nicht die korrekte Lösung-

Java:
public String geta() {
                    return b ; 
                    
                   }

Das ist auch geil ^^
 
Zuletzt bearbeitet von einem Moderator:
Java:
 public String geta() {
                    return b ; 
                    
                   }
das ist lustig, du versprichst "getA" lieferst aber b 🙂

in deiner ActionPerformed Methode wird a kein Wert zugewiesen.
Du solltest evtl die Methode "saying()" aufrufen, die macht ja das was du willst

Java:
 public void saying () {  
                  a = Eingabe.getText();          
                        
                   }    
 
           @Override
           public void actionPerformed(ActionEvent ae){
           saying();
           System.out.println(a);
        }


Klassen stehen fuer sich alleine.
Klassen stellen oeffentliche Methoden zur Verfuegung, um mit ihnen zu interagieren.
Auf Membervariablen zuzugreifen ist NIE eine gute Idee!

Static ist erstmal auch nur in bestimmten Situationen eine brauchbare Loesung - meist ist ein Singleton besser geeignet, aber nun gut.

Ich persoenlich wuerde auch die Main Funktion auslagern...
 
Zuletzt bearbeitet:
Ich weiss das ist jetzt wahrscheinlich ziemlich nervig, aber ich habe jetzt das Problem das die andere KLasse in der ich den String a verwenden möchte ihn nicht erkennnt. Also da steht als fehler "Syntax error on token "a", VariableDeclarator expected after this token"
Hier der Code:
Java:
package myscan;

import java.awt.AWTException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import myscan.Form1;

public class Buttonok implements ActionListener{
	
	Form1 Form1object = new Form1();
    Form1object.a;
	
    @Override
	public void actionPerformed(ActionEvent arg0) {
		// TODO Auto-generated method stub
		  
	System.out.println(a);
	}

}
 
Vielleicht wäre es hier angebracht die Java - Grundlagen nochmal anzuschauen.

Wen du so einen ActionListener hast, dann kannst du das A einfach über Konstruktor-Parameter übergeben,
 
Ich weiss ja nicht, aus welcher Programmiersprache du kommst, aber
Java:
Form1object.a;
das bringt in Zeile 11 nichts...

wenn du das schon static machen willst, dann muss
Java:
Form1object.a;
nach

Java:
    @Override
    public void actionPerformed(ActionEvent arg0) {
        // TODO Auto-generated method stub
          
    System.out.println(Form1object.a);
    }
 
}
 

Zurück
Oben