Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Zwischen Frame und Klasse kommunizieren...

Empfohlene Antworten

Veröffentlicht

Hallo.

Folgendes:

Ich habe eine GUI, also z.B. ein Frame, in dem man verschiedene Angaben macht. Diese werden dann an eine Klasse übergeben, die diese z.B. auswertet.

Diese Klasse, soll dann die ausgewerteten Daten wieder an das Frame zurückgeben, um dort angezeigt zu werden.

Ich hatte das so versucht:

(von der klasse an das frame daten zurückgeben)


Frame f = new Frame();

f.showData(........);

Habe also im Frame eine Methode gemacht, die die Daten dann anzeigt. Habe wie oben gezeigt in der KLasse diese Methode mit den entsprechenden Parameter aufgerufen.

Es kann ja aber irgendwie nicht funktionieren, da mit "Frame f = new....." ja eine neue Instanz von Frame initialisiert wird, und nicht auf die aktuelle angewendet.

Wie bekomm ich das also hin, dass ich Daten vom Frame an eine KLasse übergebe, und diese dann wieder zurück zum Frame um dort angezeigt zu werden.

MfG Lukas

Du könntest zum Beispiel die Instanz des Frames als Parameter an die Methode übergeben und dann von innerhalb der Methode die Werte an den Frame geben.

Eine andere Möglichkeit ist, die Methode mit einem Rückgabewert zu versehen, mit dem du die Rechenergebnisse (oder was auch immer) zurückgibst. Diese kannst du dann im Frame anzeigen lassen.

Ich persönlich würde die zweite Möglichkeit wählen. Du hast so die Möglichkeit, die Bearbeitungs-Klasse auch mit anderen Frames zu verwenden.

Ok, danke. Ich denke ich Grundprinzip verstehe ich, was du meinst.

Gibt es vielleicht ein Codebeispielt dafür ? Ich bin noch Anfänger und kann es mir so vielleicht besser vorstellen.

also z.B: in der Klasse zum berechnen:


public int Bla(int a, int b {

int c;

c = a*b;

return c;

}

Aber wie mache ich dann, dass c im Frame angezeigt wird ? Also im frame rufe ich die methode ja so auf:

Klasse c = new Klasse();

c.Bla(5,3);

Aber wie zeige ich dann c an ?

edit 2:

hm, ich hab ne vermutung. sag mir obs richtig ist :D


//aufruf und anzeigen der methode bzw. das ergebnis der berechnungsklasse im frame

...eventhandler bei buttonklick und so weiter....

Klasse c = new Klasse();

label.setText(c.Bla(5,3));

würde das so gehen ? Also die method eim prinzip bei setText aufrufen.

Prinzipiell richtig. Ich würde allerdings immer korrekt in in einen String umwandeln:

int result = bla(hallo, du);

jTextField.setText(String.valueOf(result);

Ok, danke. Und wie ist es, wenn eine Methode mehrere Wrte zurückgibt ? (geht das überhaupt ? )

Ok, danke. Und wie ist es, wenn eine Methode mehrere Wrte zurückgibt ? (geht das überhaupt ? )

es geht immer nur ein rückgabewert.

- du kannst ein array zurückgeben [public int[] blubb()]

- du kannst sie in ne klasse stecken [public MyClassWithObjects blubb()]

- du gibst ein Vector zurück, der frißt alles [public Vector <Object> blubb()]

bigredeyes

p.s. google mal nach MVC (model view controller)

Danke.

Habe dann nochmal eine Frage:

Wie zeige ich ein Array in einem TextPane an ?


float[ ] result = c.Viereck(

                            Float.parseFloat(this.jTextField1.getText()),

                            Float.parseFloat(this.jTextField2.getText()),

                            Float.parseFloat(this.jTextField4.getText()));


                    this.jTextField4.setText(String.valueOf(result));

Hab ich probiert. Aber er gibt dann immer irgendwas undfinierbares aus.


float[] viereck(){

     //array anlegen. das geben wir nachher zurück

     float[] arr = new float[4];

     //array voll machen mit 4 floats

     arr[0] = Float.parseFloat(this.jTextField1.getText());

     arr[1] = Float.parseFloat(this.jTextField2.getText());

     arr[2] = Float.parseFloat(this.jTextField3.getText());

     arr[3] = Float.parseFloat(this.jTextField4.getText());

     //array zurückgeben

     return arr;

}

bigredeyes

Danke.

Habe auch grad selbst rausbekommen, dass ich sie auch so ausgeben kann:


...

this.jTextPane1.setText(String.valueOf(result[0] + result[1]));

...

Greez

oder deinFrame.getContentPane............

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.