Variablenübergabe zwischen 2 gui-frames

Hallo,

ich muss Variablen zwischen 2 Frames übergeben. Z.b. Logininfos usw.

Normalerweise macht man das über eine Klasse z.b. “user” und schreibt da alles hinein was man zur laufzeit eventuell benötigt.

Wie kann man denn das realisieren.

MFG geniusone

Ich habe dir mal in die Jar-Datei im Anhang etwas ausführbaren Testcode gelegt. So ungefähr kann man Fenster mit einander kommunizieren lassen. Ob das un das ist, was du suchst…?
Wenn nicht, solltest du deine Frage etwas präzieser formulieren.

Hallo L-ectron-X, danke für deine Antwort.

Genau das was du Programmiert hast suche ich… Hast du das mit einer Klasse realisiert oder benutzt du einen abgeänderten Konstruktor??

Eigentliche Programmierweise:

MainFrame ----> schreibt daten an Klasse —> user
Frame1 holt sich daten aus Klasse <---- user

FrameX -||-…

MFG genius

p.s. kannst mal den code posten ??

Es sind zwei Klassen. Für dieses Beispiel habe ich kein POJO o.ä. zur Datenhaltung genutzt, wäre aber damit auch kein Problem.
Der Quellcode liegt in der Jar-Datei im Verzeichnis src. Also mit einem Packprogramm öffnen.

Hallo L-ectron-X, danke für deine Antwort.

Gibt es denn eine möglichkeit diese daten in eine Klasse zwischen zu speichern??

MFG

Sicher. Schreibe dir eine reine Datenklasse (POJO -Plain Old Java Object) in der du die Daten hältst.
Eine solche Klasse könnte so aussehen:

   private String username;
   private char[] password;
   
   public User() {
   }

   public User(String username, char[] password) {
      setUsername(username);
      setPassword(password);
   }

   public void setUsername(String username) {
      this.username = username;
   }

   public String getUsername() {
      return username;
   }

   public void setPassword(char[] password) {
      this.password = password;
   }

   public char[] getPassword() {
      return password;
   }
}```

Danke für die Klasse. Aber das Problem ist das die Klasse ja im Frame_x instanziert wird und im Frame_y nicht bekannt ist.
Hast du ein Tip??

MFG genius

Zunächst mal sollte eine Anwendung immer nur einen JFrame haben (das Hauptfenster), alle anderen Fenster sollten JDialoge oder JOptionPanes sein.

Um einen User zu erzeugen könnte man ein leeres User-Objekt im Hauptfenster erzeugen und es via Konstruktor in den Dialog übergeben, wo es mit den set()-Methoden gefüllt wird. Anschließend kann es an das Hauptfenster zurückgegeben werden.

Denkbar wäre auch, dass der Dialog einfach ein gefülltes Objekt an das Hauptfenster zurückgibt.
owner.setLoginData(new User(userNameTF.getText(), passwdF.getPassword()));

Ich habe oben mal die Jar-Datei entsprechend aktualisiert.

Hallo und danke für deine Antwort.

Aber ich habe immer noch meine programmierweise vom .Net im hintergrund. Da war es möglich eine Klasse z.b. “user”
von jeden objekt (gui) aus zu füllen und auch abzufragen ohne es vorher neu instanziert zu haben. Es handelt sich dabei nicht um eine static class.
Man kann sagen so eine klasse zum zwischenspeichern von infos. Ist das denn in java net möglich.
Es scheint mir ein wenig umständlich eine klasse die überall bekannt ist und diese von A nach B zurück gibt.

MFG genius

In Java gibt es nichts anderes, da wird alles über Referenzen gemacht. Wie heißt das Konzept in .NET?

Man kann auch im Dialog, in dem der Benutzer seine Daten für den Login eingibt, eine lokale Klasse (User) einbetten, deren gefülltes Objekt dann an das Hauptfenster zurückgeliefert wird.
Lösungen gibt es viele, es gilt eine passende und elegante Lösung zu finden.

Entweder er meint ein interface, welches sich in java genauso verhält, oder er hat eine Klasse als DLL abgespeichert. Keine Ahnung. Ziemlich schwammig das Ganze.

[QUOTE=L-ectron-X]Zunächst mal sollte eine Anwendung immer nur einen JFrame haben (das Hauptfenster), alle anderen Fenster sollten JDialoge oder JOptionPanes sein.

Um einen User zu erzeugen könnte man ein leeres User-Objekt im Hauptfenster erzeugen und es via Konstruktor in den Dialog übergeben, wo es mit den set()-Methoden gefüllt wird. Anschließend kann es an das Hauptfenster zurückgegeben werden.

Denkbar wäre auch, dass der Dialog einfach ein gefülltes Objekt an das Hauptfenster zurückgibt.
owner.setLoginData(new User(userNameTF.getText(), passwdF.getPassword()));

Ich habe oben mal die Jar-Datei entsprechend aktualisiert.[/QUOTE]

ich kann die datei nicht öffnen. kannst du den text vielleicht hier posten?
danke

Was meinst du mit “nicht öffnen”?
Die Jar-Datei ist ausführbar. Doppelklick und das Programm startet. Sollte das bei dir nicht funktionieren kannst du es auch in der Kommandozeile starten: java -jar MainFrame.jar

Wenn du den Quelltext sehen wolltest: der ist in der Jar-Datei enthalten. Also, herunterladen, jar in zip umbenennen und mit einem ganz normalen Packprogramm entpacken.

Hallo L-ectron-X,
ja letzte Woche konnte ich die Datei nicht mal runterladen.
Heute hat es geklappt mit runterladen, aber beim öffnen erhalte ich lediglich ein leeres Fenster. ???

zu meinem Problem:
Ich suche eine Möglichkeit wie ich Daten von einem JFrame zum anderen JFrame übertragen kann.
In meinem Java Programm werden zwei Instanzen gebildet (quasi für zwei Player) und die Felder welche in einem JFrame markiert sind, sollen auch automatisch in der anderen Instanz des JFrames markiert werden.
War hoffentlich klar genug. :slight_smile:
Vielen Dank schon mal im voraus …

MfG

zaag

Sieh dir das Programm genau an. Es hat eigentlich nur eine Funktion: einen Benutzer anmelden. Der Benutzername wird vom Anmelde-Dialog ins Hauptfenster transferiert.
Das ist vermutlich nicht genau, was du willst.

Du schreibst ein Schiffeversenken?
Du brauchst wohl in deinem Fall eine Klasse, die den Transfer organisiert. Sie muss beide JFrames kennen. BTW sollte eine Anwendung immer nur einen JFrame (Hauptfenster) haben.

*** Edit ***

Vielleicht noch ein helfender Link ins Wiki: Zugriff: von einem Objekt zum Anderen

Danke,
das geht in die Richtung zur Lösung meines Problems, ich werde damit mal etwas experimentieren und schauen ob klappt.
P.S.: nicht Schiffe versenken :slight_smile:
wenn es geklappt hat gebe ich nochmal Feedback.

MfG
zaag

[QUOTE=zaag]zu meinem Problem:
Ich suche eine Möglichkeit wie ich Daten von einem JFrame zum anderen JFrame übertragen kann.
In meinem Java Programm werden zwei Instanzen gebildet (quasi für zwei Player)[/QUOTE]Wenn @L-ectron-X recht hat suchst Du eigentlich nach einem Datenaustausch via Netzwerk. Was macht es denn für einen Sinn, wenn die beiden Fenster auf dem selben Rechner zu sehen sind?

bye
TT

da ich noch ein blutiger Anfänger bin dachte ich , ich probiere es erst auf einem Rechner

MfG
zaag

Sag uns einfach, was du vor hast, dann sehen wir mal, wie wir dir helfen können. Bis jetzt kamen noch nicht sehr viel Informationen von dir.

:)OK. Also: Ich habe TicTacToe Programmiert, ist ja soweit ganz simpel. Möchte ich aber, dass man das mit 2 Playern Spielen kann, natürlich auf zwei unterschiedlichen Rechnern. Idealfall ist das es nur übers Internet mit den beiden Playern Kommuniziert.
Das ist im großen und ganzen das Hauptproblem.

Ich bin gespannt auf eure Beiträge… :slight_smile:

MfG
zaag