Übergabe von Frame-Objekt - kritisch?

Status
Nicht offen für weitere Antworten.

skummy

Aktives Mitglied
Hallo Forum,

Ich will ein Frame-Objekt einem anderen Frame übergeben, damit ich die Felder des übergebenen Frame-Objektes ändern kann.
Dazu implementiere ich eine setText()-Methode im Ausgangsframe (Frame1):
Code:
public void setText(String text) {
    jTextField1.setText(text);
}
Wenn auf einen Button geklickt wird, übergeb ich das Frame-Objekt:
Code:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
       Frame2 dlg = new Frame2(this);
       dlg.setVisible(true);       
}
Danach öffnet sich Frame2. Wenn ich in diesem Frame auf einen Button klicke, soll sich das Textfield im Frame1 ändern:
Code:
    Frame1 dlg;

    public Frame2(Frame1 dlg) {
        initComponents();
        this.dlg = dlg;
    }

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
       dlg.setText("Hallo");
}

Funktioniert auch ohne Probleme.

Mit diesen stark vereinfachten Beispiel wollte ich fragen, ob so eine Vorgehensweise durchaus üblich ist, wenn man Daten von einem Frame in das andere bekommen will. Verbraucht diese Vorgehensweise zu viel Speicher? Gibt es andere Möglichkeiten zu dem gleichen Ergebnis zu kommen - nur "schöner"?



Vielen Dank für Hinweise und Antworten :)!

Grüße
Sandro
 

Wildcard

Top Contributor
Mit Speicher hat das nichts zu tun, es ist nur hässlich.
Es geht dir vermutlich um eine Benutzereingabe?
Verwende doch einfach einen Modalen Dialog und hol der den gewünschten Wert vom Dialog ab, sobald er fertig ist.
 

skummy

Aktives Mitglied
Hmm...Nein, um Benutzereingaben geht es im konkreten Fall nicht.
In diesem konkreten Fall soll beim Öffnen des neuen Frames (Frame2) ein Thread gestartet werden, der bestimmte Ausgaben an eine Text-Area in Frame1 bringen soll. Das neue Frame (Frame2) zeigt dabei nur eine Progessbar an.
Das Problem ist nun, dass der Thread ja nur mit dem Frame1-Objekt die Ausgaben printen kann, oder? Warum ist diese Vorgehensweise hässlich?


Danke und Tschau
Sandro
 

Wildcard

Top Contributor
Wie gesagt, nimm stattdessen einen JDialog der die ProgressBar anzeigt und lass dir anschließend den Wert vom Dialog zurückgeben.
Warum ist diese Vorgehensweise hässlich?
Weil es keinen Vernünftigen Grund gibt warum der zweite Dialog/Frame vom ersten wissen muss.
 

Marco13

Top Contributor
Mal ganz hemdsärmelig gesagt könnte man das über ein Interface machen. Da dein Beispiel ziemlich abstrakt und schwammig war, kann auch diese Antwort nur abstrakt und schwammig sein. Aber sinngemäß sowas
Code:
interface DataReceiver
{
    void receiveData(String data);
}

class Frame1 implements DataReceiver
{
    public void receiveData(String data)
    {
        textField.setText(data);
    }
}

class Frame2 
{
    public Frame2(DataReceiver dataReceiver)
    {
        ....
        dataReceiver.receiveData("Hello!");
    }
}

Ist jetzt halt nur zur Verdeutlichung hingerotzt. Wie das Interface heißen könnte, welche Methoden es haben sollte, und OB das für deinen Fall überhaupt passt, musst letztendlich immer DU entscheiden....
 

skummy

Aktives Mitglied
OK, sieht doch schonmal gut aus :)! So abstrakt reicht mir das auch ;)! Soll ja nur um das grundsätzliche Problem gehen.

@Marko13:
Und das dataReceiver-Objekt brauch ich nirgends erzeugen und kann es dem Frame2-Konstruktor einfach so wie du es gemacht hast übergeben? Das wäre dann natürlich praktisch, wenn das so funktionieren würde :###


Grüße,
Sandro
 

Marco13

Top Contributor
Nein, dem Frame2 wird nach wie vor der Frame1 übergeben - der IST ja ein DataReceiver. Der Vorteil ist aber, dass er im Frame2 nicht mehr als Frame1 bekannnt ist, sondern eben NUR als DataReceiver - ein Objekt, das genau die eine Aufgabe erfüllt, die erstellten Daten zu empfangen.

Vorher hätte ein "böswilliger" Frame2 ja sowas machen können wie
Code:
public Frame2(Frame1 frame1)
{
    frame1.dispose(); // Ätsch!
}
Das geht jetzt nichtmehr. Darüber hinaus ist man flexibler. Man könnte auch einen
Code:
class FileDataReceiver implements DataReceiver
{
    public void receiveData(String data) 
    {
        writeToSomeFile(data);
    }
}
machen und dem Frame2 übergeben - dann werden die Daten nicht in Frame1 angezeigt, sondern in eine Datei geschreiben. Das kann man auch beides kombinieren, usw, usw...

Mit dem DataReceiver-Interface wird der Teil rausfaktorisiert, der dort gemacht werden muss: Es müssen Daten empfangen werden. Und der DataReceiver macht das und nur genau das. Aber bevor du das jetzt einfach so übernimmst, solltest du wirklich überlegen, ob das für deinen Fall geeignet ist, und wie das Interface für deinen Fall aussehen sollte.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Konstruktor ohne Übergabe eines Wertes Java Basics - Anfänger-Themen 7
K Übergabe des Wertes einer Variable aus main() in eine Klassenmethode Java Basics - Anfänger-Themen 8
K Übergabe von Werten (zweidimensionales Array) aus einer Methode an zweidimensionales Array in main() Java Basics - Anfänger-Themen 3
S Übergabe von Arrays an Methoden Java Basics - Anfänger-Themen 20
Curtis_MC Parameter-Übergabe bei Klassen und Methoden Java Basics - Anfänger-Themen 12
D Methode mit Übergabe double und Rückgabe String Java Basics - Anfänger-Themen 2
L Methoden Übergabe von Parameter Java Basics - Anfänger-Themen 3
K Java Problem mit Übergabe von argumenten Java Basics - Anfänger-Themen 3
J Übergabe von Parametern an andere Methoden Java Basics - Anfänger-Themen 5
D Probleme mit der Übergabe einer BorderPane Java Basics - Anfänger-Themen 2
R Methoden Übergabe von einer Methodenvariable Java Basics - Anfänger-Themen 3
M Übergabe von Werten Java Basics - Anfänger-Themen 10
arjoopy Kapselung Übergabe von Objekten aus ArrayList Java Basics - Anfänger-Themen 4
C Erste Schritte Übergabe von Klassen Java Basics - Anfänger-Themen 2
C Methoden Objekte und Methode und Übergabe Java Basics - Anfänger-Themen 4
O Übergabe in eine andere Klasse Java Basics - Anfänger-Themen 3
M Übergabe / Rückgabe Java Basics - Anfänger-Themen 6
S Kapselung Objekt bei Übergabe an Konstruktor nicht initalisiert Java Basics - Anfänger-Themen 3
T Problem bei Übergabe von Variablen Java Basics - Anfänger-Themen 1
fLooojava Probleme bei der Übergabe einer Variable Java Basics - Anfänger-Themen 14
R Vererbung Übergabe von Variablen der Superklasse an Subklasse mit "extends" Java Basics - Anfänger-Themen 5
S OOP Übergabe eines Objektes? Java Basics - Anfänger-Themen 1
fLooojava OOP Übergabe/Output in Textfield Java Basics - Anfänger-Themen 4
U Übergabe von Objekten Java Basics - Anfänger-Themen 0
J ArrayList toString() Übergabe Fehler Java Basics - Anfänger-Themen 2
S Übergabe Java Basics - Anfänger-Themen 14
S Klassen Array: Übergabe von Klasse zur Main Java Basics - Anfänger-Themen 8
A NullPointerException bei Übergabe eines Array Java Basics - Anfänger-Themen 8
feardorcha Methodenaufruf Übergabe- und Rückgabewert Java Basics - Anfänger-Themen 5
D Klassen Problem - Übergabe an Konstruktor von Superklasse Java Basics - Anfänger-Themen 2
D Objekt Übergabe Java Basics - Anfänger-Themen 12
M Array Übergabe Java Basics - Anfänger-Themen 17
W Übergabe Stringzeilen von serieller Schnittstelle in andere Klasse Java Basics - Anfänger-Themen 3
B Übergabe Dateiname (String) an andere Klasse Java Basics - Anfänger-Themen 4
P Methoden Übergabe von Werten Java Basics - Anfänger-Themen 7
F Variablen Übergabe von eingelesenen Variablen in neue Klasse Java Basics - Anfänger-Themen 15
M Fragen zu Methoden (void/return), Übergabe von Parametern Java Basics - Anfänger-Themen 3
A Übergabe von Variablen zu Paintmethode Java Basics - Anfänger-Themen 2
N Array Übergabe Java Basics - Anfänger-Themen 9
L Klassen Parameter Übergabe Java Basics - Anfänger-Themen 12
A OOP Übergabe eines Wertes an den enum Konstruktor Java Basics - Anfänger-Themen 12
O Übergabe von Variablen Java Basics - Anfänger-Themen 9
Darth Simple Übergabe eines Strings an eine Methode Java Basics - Anfänger-Themen 3
A Frage zur Übergabe von Strings Java Basics - Anfänger-Themen 9
N Übergabe problem Java Basics - Anfänger-Themen 6
M Übergabe von VM Argumenten Java Basics - Anfänger-Themen 4
J Übergabe einer ArrayList an mehrere Threads Java Basics - Anfänger-Themen 3
E Übergabe von werten aus einem JDialog Java Basics - Anfänger-Themen 4
J Übergabe eines Arrays als Parameter Java Basics - Anfänger-Themen 2
L JTabbedPane, richtige Übergabe von Tabs Java Basics - Anfänger-Themen 18
Z BigInteger Methoden und deren Übergabe Java Basics - Anfänger-Themen 3
K Übergabe einer im EventListener definierte variablen Java Basics - Anfänger-Themen 2
M Übergabe von Variablen in eine Klasse Java Basics - Anfänger-Themen 13
G Wieso ist eine String-Übergabe keine by-reference-Zuweisung? Java Basics - Anfänger-Themen 7
M Problem bei der Übergabe von Werten Java Basics - Anfänger-Themen 7
G Übergabe von Parametern an JSP Java Basics - Anfänger-Themen 3
S Veränderung von Protected Daten durch Übergabe? Java Basics - Anfänger-Themen 3
K Übergabe der Variable für Farbe Java Basics - Anfänger-Themen 6
G List<.> nach Übergabe vergleichen? Java Basics - Anfänger-Themen 3
G Übergabe Variablen von Servlet zu JSP? Java Basics - Anfänger-Themen 4
R Beiß mir die Zähne aus an der Request-Parameter-Übergabe! Java Basics - Anfänger-Themen 10
lin Übergabe an JPanel-Klasse Java Basics - Anfänger-Themen 3
S NullPointerException bei Array-Übergabe Java Basics - Anfänger-Themen 3
D Übergabe von Variablen Java Basics - Anfänger-Themen 11
W Variabeln Übergabe Java Basics - Anfänger-Themen 14
F Großes Problem: Vector-Übergabe Java Basics - Anfänger-Themen 7
F Übergabe Vaterframe mit this und Fehlermeldung. Java Basics - Anfänger-Themen 2
D Fragen zu Methoden und Übergabe von Werten Java Basics - Anfänger-Themen 4
G Übergabe von Variablenwerten zwischen Methoden Java Basics - Anfänger-Themen 4
D Problem bei Übergabe von Werten an eine Methode Java Basics - Anfänger-Themen 2
H Übergabe eines Wertes an eine Bean --> Bean leer Java Basics - Anfänger-Themen 6
T Array-Übergabe Java Basics - Anfänger-Themen 7
M Windows Pfad-Übergabe.. Java Basics - Anfänger-Themen 6
S String mit Konstruktor (per Übergabe) initialisieren Java Basics - Anfänger-Themen 10
Alex_99 Aktion ausführen wenn Frame disposed wurde Java Basics - Anfänger-Themen 5
frager2345 Fensterklasse, Wie auf Frame im Listender zugreifen (ItemEvents) Java Basics - Anfänger-Themen 7
S GUI Frame wechseln Java Basics - Anfänger-Themen 15
C Exportierte JAR öffnet zweiten Frame nicht mehr Java Basics - Anfänger-Themen 7
C Erkennen ob Frame geschlossen wurde Java Basics - Anfänger-Themen 2
C Erste Schritte Spieler an anderen Frame weitergeben Java Basics - Anfänger-Themen 23
G Probleme bei Frame aufgaben Java Basics - Anfänger-Themen 6
CptK Interface Klasse Frame (extends JFrame) aus anderer Klasse schließen Java Basics - Anfänger-Themen 7
S Interface (WindowBuilder) Panels in einen Frame einfügen Java Basics - Anfänger-Themen 10
S Nach dem Herüberschieben eines Arrays zwischen 2 Frames öffnet sich das Frame nicht mehr Java Basics - Anfänger-Themen 12
S in ActionListener auf Eingabe aus anderem Frame warten Java Basics - Anfänger-Themen 2
D Interface Frame doppelt durch Aufruf der GUI Klasse Java Basics - Anfänger-Themen 1
M Erste Schritte Neuen Frame nur einmal offen haben Java Basics - Anfänger-Themen 6
schoenosrockos JButton füllt immer das ganze frame Java Basics - Anfänger-Themen 1
R Erste Schritte Frame mit Ladebalken und BestätigungsButton Java Basics - Anfänger-Themen 10
das_leon Interface Frame in einem Frame (Window Builder) Java Basics - Anfänger-Themen 2
Anfänger2011 Frame zeigt nicht gewünschtes Ergebnis an ... Java Basics - Anfänger-Themen 5
Z Object Kreis am Frame abprallen lassen! Java Basics - Anfänger-Themen 12
D Bild in Frame einfügen Java Basics - Anfänger-Themen 11
I Methoden Schwierikeiten mit Protokollfenster (Frame Objekt) Java Basics - Anfänger-Themen 4
A mehrere Panels in eigenen Klasssen in einem Frame Java Basics - Anfänger-Themen 16
J Extra Fenster (Frame) Java Basics - Anfänger-Themen 20
W Frame in anderer Klasse anzeigen lassen Java Basics - Anfänger-Themen 1
E Von Instanz des Dialogs auf das Frame zugreifen Java Basics - Anfänger-Themen 8
E 2. JFrame erkennt 1. Frame Java Basics - Anfänger-Themen 6
C Bild ins Frame laden und Objekte drüber legen Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben