LukeGee Geschrieben 19. Februar 2007 Geschrieben 19. Februar 2007 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 Zitieren
Cobinja Geschrieben 19. Februar 2007 Geschrieben 19. Februar 2007 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. Zitieren
LukeGee Geschrieben 19. Februar 2007 Autor Geschrieben 19. Februar 2007 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 ? Zitieren
LukeGee Geschrieben 19. Februar 2007 Autor Geschrieben 19. Februar 2007 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. Zitieren
Cobinja Geschrieben 19. Februar 2007 Geschrieben 19. Februar 2007 Prinzipiell richtig. Ich würde allerdings immer korrekt in in einen String umwandeln: int result = bla(hallo, du); jTextField.setText(String.valueOf(result); Zitieren
LukeGee Geschrieben 19. Februar 2007 Autor Geschrieben 19. Februar 2007 Ok, danke. Und wie ist es, wenn eine Methode mehrere Wrte zurückgibt ? (geht das überhaupt ? ) Zitieren
bigredeyes Geschrieben 19. Februar 2007 Geschrieben 19. Februar 2007 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) Zitieren
LukeGee Geschrieben 19. Februar 2007 Autor Geschrieben 19. Februar 2007 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. Zitieren
bigredeyes Geschrieben 19. Februar 2007 Geschrieben 19. Februar 2007 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 Zitieren
LukeGee Geschrieben 19. Februar 2007 Autor Geschrieben 19. Februar 2007 Danke. Habe auch grad selbst rausbekommen, dass ich sie auch so ausgeben kann: ... this.jTextPane1.setText(String.valueOf(result[0] + result[1])); ... Greez Zitieren
Schneeflocke Geschrieben 23. Februar 2007 Geschrieben 23. Februar 2007 oder deinFrame.getContentPane............ Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.