Klassen übergeben

seppsepp

Mitglied
Hallo zusammen 🙂

Ich hab ne dringende Frage und schon ewig im inet gesucht...

Ich öffne im HauptFrame eine Klasse:
Java:
HauptFrame Class1 = new HauptFrame();

dann speichere ich Daten in die Variablen der Klasse

nun öffne ich per Button ein neues Frame

Java:
NebenFrame frame2 = new NebenFrame();
frame2.setVisible(true);

nun brauche ich die Daten die ich im HauptFrame in die Variablen der Klasse gespeichert habe...

kann ich die geöffnete Klasse dem neuen Frame mit geben?

Danke für die schnelle Antwort! 🙂
 
Noch weitere Infos, ich benutze Swing und die beiden Frames sind alls GUI schon erstellt, dass heist der ganze weitere Code brauch ich im anderen File. Wenn ich dort
HauptFrame Class1 = new HauptFrame();schreibe dann hab ich zwar meine Klasse, aber halt neu erstellt und da sind meine Daten nicht enthalten^^
 
Stichwort: Parameter, setter/getter

Java:
MyClass object1 = new MyClass();

MyOtherClass object2 = new MyOtherClass(object1.getValue1());
object2.setValue2(object1.getValue2());
Ich würde das voerst mit 2 Dummy Klassen üben. 2 Objekte von einer Klasse erstellen. Werte von einem Objekt ins andere Objekt übertragen.
Wenn dir klar ist wie/warum/weshalb dann probiers auf dein Problem umzusetzen.
 
Zuletzt bearbeitet:
und wo soll ich die Klassen öffnen im Hauptframe oder im NebenFrame?

und wie kann ich dann im jeweilig anderem Frame die Klasse öffnen ohne sie neu zu erstellen?
 
Zuletzt bearbeitet:
Wo erstellst du denn dein Objekt der Klasse NebenFrame? Ich nehme an in der Klasse Hauptframe hast du den ActionListener implementiert der auf den Button-Klick reagiert? Dann kannst du nach dem erstellen deines NebenFrames doch einfach ein paar setter aufrufen und Werte übergeben.

Ich würde generell noch etwas probieren die objektorientierte Programmierung mit ein paar Konsolenprogrammen zuüben bevor du weiter mit einer UI arbeitest.
Je besser die OOP sitzt umso einfacher tust du dir bei der UI Programmierung.
 
Zuletzt bearbeitet:
eigentlich geht es mir einfach darum, das ich die Klasse die ich im Hauptframe geöffnet habe dem NebenFrame mitzugeben, sodass ich im Nebenframe die Klasse nicht erneut aufrufen muss...

weil wenn ich sie nochmals öffnen muss gehen die bereits gespeicherten Werte verloren.

Danke und Gruss 🙂
 
eigentlich geht es mir einfach darum, das ich die Klasse die ich im Hauptframe geöffnet habe dem NebenFrame mitzugeben, sodass ich im Nebenframe die Klasse nicht erneut aufrufen muss...

Und das ist nun mal etwas grundlegendes die "objektorientierte Programmierung". Du hast ein Objekt (dein HauptFrame) welches ein paar Werte gesetzt hat. Diese Werte brauchst du in einem anderen Objekt. Daher wie oben schon mein Beispiel: setter und getter Methoden verwenden um die Werte von Objekt A nach Objekt B zu übertragen.
 
ja ich habe get und set Methoden, so speichere ich meine Werte, dass Problem ist im neuen Frame muss ich ja GetKlasse1 k1 = new GetKlasse1(); schreiben. Wenn ich das aber mache dann sind die Werte nicht mehr gesetzt weil ich die Klasse ja neu aufgerufen habe :/

Vielleicht hab ich da auch einen Grundlegenden Fehler in meinem Prinzip, kannst du mir ein kleines Beispiel machen?
(natürlich nur wenn du Zeit und Lust hast)

Gruss
 
bei meinem Prinzip(welches nicht funktioniert) hab ich in beiden Frames GetKlasse1 k1 = new GetKlasse1(); stehen. Und was nicht funktioniert ist, wenn ich in Frame1 Variablen sette und ich die gesetzten Variablen in Frame2 getten will.
 
@TE: Ich finde deine bisherigen Äußerungen ziemlich verwirrend.
Anstatt uns Prosa oder vollkommen aus dem Kontext gerissene Zweizeiler zu prässentieren, könntest du vielleicht mal ein lauffähiges Programm mit < 100 Zeilen präsentieren und erläutern, was daran nicht so geht wie du willst?
 
Du sollst in deinem Nebenframe auch nicht die Klasse neu erstellen, sondern sie als Parameter mitgeben.
Java:
//NebenFrame Konstruktor
public NebenFrame(HauptFrame haupt) {
  //hauptframe speichern
  this.hauptframe = haupt;
}
//wo auch immer du deinen NebenFrame erzeugst:
NebenFrame neben = new NebenFrame(this);
//bzw. falls es direkt im ActionListener passiert, welcher eine innere Klasse von HauptFrame ist:
NebenFrame neben = new NebenFrame(HauptFrame.this);
 
Okeey das tönt schon mal nicht schlecht danke! 😀
(habs leider nicht ganz hin bekommen.)

Hier rufe ich im HauptFrame (GameGui) die Klasse auf.

[JAVA]public class GameGui extends javax.swing.JFrame {

ClassSoldaten soldaten = new ClassSoldaten();


public GameGui() {
initComponents();

}


[/code]

das ist im Hauptframe (GameGui) wo ich per button das Nebenframe (Soldatenlöschen) aufrufe:

[JAVA]private void btnSoldatdelActionPerformed(java.awt.event.ActionEvent evt) {
Soldatenlöschen SoldatenlöschenForm = new Soldatenlöschen();
SoldatenlöschenForm.instanzSoldaten = soldaten;
SoldatenlöschenForm.setLocationRelativeTo(null);
SoldatenlöschenForm.setResizable(false);
SoldatenlöschenForm.setVisible(true);
}
[/code]

Hier ist das NebenFrame (Soldatenlöschen) und hier musste ich die Klasse neu aufrufen :/

[JAVA]public class Soldatenlöschen extends javax.swing.JFrame {
ClassSoldaten instanzSoldaten = new ClassSoldaten();


public Soldatenlöschen() {
initComponents();

//Bild1 Soldat
if (instanzSoldaten.getSpieler1Soldat1() == instanzSoldaten.getSoldatName1()) {
jComboBoxsoldatenlöschen.addItem(instanzSoldaten.getSoldatName1());
}
else ...
{[/code]

und hier seht ihr die Struktur..
attachment.php
 

Anhänge

  • aufbau.PNG
    aufbau.PNG
    6,3 KB · Aufrufe: 70
Daaaaaaaaaaaaaanke Jungs jetzt bei genauerer betrachtung ist der 50er gefallen! 😀

Java:
private void btnSoldatdelActionPerformed(java.awt.event.ActionEvent evt) {     

       Soldatenlöschen SoldatenlöschenForm = new Soldatenlöschen(this.soldaten); 
       SoldatenlöschenForm.instanzSoldaten = soldaten;
       SoldatenlöschenForm.setLocationRelativeTo(null);
       SoldatenlöschenForm.setResizable(false);
       SoldatenlöschenForm.setVisible(true);
    }


Java:
public Soldatenlöschen(ClassSoldaten soldaten) {        
initComponents();
        this.instanzSoldaten = soldaten;
        
        
                //Bild1 Soldat
        if (instanzSoldaten.getSpieler1Soldat1() == instanzSoldaten.getSoldatName1()) {
            jComboBoxsoldatenlöschen.addItem(instanzSoldaten.getSoldatName1());
        }


Bin euch suuper dankbar!
Gruss
 

Zurück
Oben