Java Get in andere Klasse

gfeschu

Ensign
Registriert
Aug. 2010
Beiträge
147
Hallo Zusammen.

Ich bin ein Java Neuling und die Klassen/Variablen/Methoden Namen sind nicht definitiv. Wollte eig nur kurz was testen. Aber es will irgwie nicht funktionieren...

Ich habe 2 Klassen.

DateiAngaben
DateiErstellen

Bei Angaben habe ich per JFrame ein GUI eingerichtet bei den man Textfelder etc. ausfüllen kann.
Am Schluss von der Klasse steht:

public String getUser() {

String user = txtLogin.getText();
return user;

}



Jetzt möchte ich per andere Klasse den String user übernehmen und in eine Textdatei speichern. Habe ich wie folgt eingegeben:

public static void Erstellen() {


String fileName = "new";
DateiAngaben login = new DateiAngaben();
String user = login.getUser();

Etc.

}


Ich habe schon so viel probiert. Aber nichts geht. Ich führe die Methoden per Submit Knopf aus.
Ohne die neue Klasse funktioniert alles tiptop. Aber sobald ich auch die Erstellen Klasse ausführe wird nichts mehr in den String gespeichert.

Kann mir jemand helfen? Ich blick überhaupt nicht mehr durch :freak:

Gruss :)
 
Wenn du eine Methode einer anderen Klasse ausführen magst musst die Klasse ableiten.
Hast also die KLasse USER und die Klasse ERSTELLEN.
Leitest erstellen von user ab und kannst dann getuser benutzen.
DAs ist nicht elegant müsste aber funktionieren wenn ich überblicke was du tun willst.

Natürlich kannste auch mit friend arbeiten (gbits das in java`), den string public machen ist ziemlich schlecht weil unsicher.
Wenn du den string in erstellen benutzen magst musst du auch den string ansprechen, was du machst ist der Methodenaufruf wozu ne ableitung besser wäre.

Sry kanns dir nich genauer sagen und bin nicht gut in java, aber vielleicht hilft dir das schon, später kriegste von den pros bestimmt ne umfassendere Antwort^^
 
Entweder ließt du deine Textbox falsch ein oder keine Ahnung. Hast es aber eh bisschen komisch gemacht, wie wärs denn damit?

Code:
public class DateiAngaben {
	
	private String user;

	public String getUser() {
		return user;
	}

	//dein String ausm Textbox
	public void setUser(String user) {
		this.user = user;
	}
}

Code:
public class DateiErstellen {
	
	public static void erstellen() {
		DateiAngaben login = new DateiAngaben();
		login.setUser("Käsekuchen"); //statt "Käsekuchen" deine Textbox oder irgendwas
		String user = login.getUser();
		System.out.println(user);
	}
	
	public static void main(String[] args) {
		erstellen(); //ausgabe: käsekuchen, alles ok
	}
}

Edit: ups habe mich verschrieben, jetzt sollte das vom code her ok sein.
 
Zuletzt bearbeitet:
gfeschu schrieb:
Jetzt möchte ich per andere Klasse den String user übernehmen und in eine Textdatei speichern. Habe ich wie folgt eingegeben:

public static void Erstellen() {


String fileName = "new";
DateiAngaben login = new DateiAngaben();
String user = login.getUser();

Etc.

}

Ich habe schon so viel probiert. Aber nichts geht. Ich führe die Methoden per Submit Knopf aus.
Ohne die neue Klasse funktioniert alles tiptop. Aber sobald ich auch die Erstellen Klasse ausführe wird nichts mehr in den String gespeichert.
Gruss :)

Wenn du die Erstellen Methode ausführst, wird eine neue Instanz von DateiAngaben erstellt, in der logischerweise kein User eingegeben wurde. Irgendwie muss ja die Erstellen Methode mitbekommen, von welcher Instanz von DateiAngaben es den User ziehen soll... Entweder über eine globale Variable oder per Übergabeparameter.
 
Ich weiss nicht, ob ich richtig liege, aber muss man da nicht ganz am anfang

Code:
public class klasse extends andere_klasse {
...
}

machen?

EDIT: Okay, scheinbar liege ich doch falsch. Es geht ohne dieses extends-Zeug
 
Zuletzt bearbeitet:
Wird eine nullpointerexception ausgelöst?
Wenn nicht, wird der "standard"-wert ausgegeben, den du beim user gesetzt hast?

Die GUI steckt in der DateiAngaben soweit ich das verstanden habe?

Wenn du das submit auslöst, was macht der button beim OnClick ?

Du solltest mal mehr Code preisgeben und eine genauere Fehlermeldung/schilderung, dann kann man dir besser helfen.
 
Du erstellst eine neue Instanz der Klasse "DateiAngaben" ohne hernach einen User abzufragen. Von daher ist das Ergebnis natürlich 'null'.

Du musst entweder hier das "DateiAngaben" Fenster sichtbar machen und den Benutzer die Eingabe tätigen lassen. Oder, und das möchtest Du wohl, das Ergebnis der Abfrage weiterreichen.

Ein lauffähiges Code-Beispiel ist immer gut, dann kann man konkretere Hinweise geben.
 
DateiErstellen muss die bereits vorhandene Instanz von DateiAngaben verwenden, sonst wird der String immer leer sein.

Also entweder wurde DateiAngaben schon vorher angezeigt und hat einen Usernamen (und evtl. mehr) oder es soll erst angezeigt werden wenn Erstellen in DateiErstellen aufgerufen wird.

Beim ersten Fall kannst Du z.B den Konstruktor von DateiErstellen ändern:
Code:
class DateiErstellen {
  DateiAngaben login;
  class DateiErstellen(DateiAngaben login) {
    this.login = login;
  }

  public void Erstellen() {
    String fileName = "new";
    String user = login.getUser();
    ...
  }
}

der zweite Fall ist komplizierter, weil dann erst in Erstellen() eine neue Instanz erstellt werden muss, angezeigt werden muss, darauf gewartet werden muss bis es geschlossen wurde bzw ist es geschickter wenn GUI-Komponenten IO-Funktionen aufrufen ..
 
Zurück
Oben