Veröffentlicht 19. Februar 200718 j 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
19. Februar 200718 j 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.
19. Februar 200718 j 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 ?
19. Februar 200718 j edit 2: hm, ich hab ne vermutung. sag mir obs richtig ist //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.
19. Februar 200718 j Prinzipiell richtig. Ich würde allerdings immer korrekt in in einen String umwandeln: int result = bla(hallo, du); jTextField.setText(String.valueOf(result);
19. Februar 200718 j Ok, danke. Und wie ist es, wenn eine Methode mehrere Wrte zurückgibt ? (geht das überhaupt ? )
19. Februar 200718 j 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)
19. Februar 200718 j 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.
19. Februar 200718 j 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
19. Februar 200718 j Danke. Habe auch grad selbst rausbekommen, dass ich sie auch so ausgeben kann: ... this.jTextPane1.setText(String.valueOf(result[0] + result[1])); ... Greez
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.