Klassen Bidirektionale Assoziation

Medicus909

Mitglied
Hallöchen Java Forum,


Ich lerne erst seit kurzem Java, und ich hätte ein paar Fragen an erfahrene Programmierprofis :)

Wenn meine Klasse Steuerung ein neues Objekt der Klasse GUI erzeugen soll, und diese sich untereinander "kennen" sollen, was muss ich dann in den Konstruktor schreiben?
Meine Steuerung:
Java:
private GUI dieGUI;

public static void main(String[] args) {
    new GUI("Fenstertitel",this);
  }
Meine GUI:
Java:
private Steuerung dieSteuerung;

public GUI(String title,Steuerung dieSteuerung) {
}
Ging das nicht so ähnlich? Habs leider vergessen :(

Gibt es eine Möglichkeit das die Klasse Steuerung, welche ja als erstes aufgerufen wird, "unsichtbar" bleibt? Bisher kommt sonst immer ein Konsolenfenster im Hintergrund, bevor die GUI erstellt wird.

Ich hoffe jemand nimmt sich meiner primitiven Probleme an :bae:

Viele Grüße Medicus909
 
Zuletzt bearbeitet:
G

Gast2

Gast
Java:
public static void main(String[] args) {
    new GUI("Fenstertitel",this);
  }
Das kann so nicht klappen. Im statischen Kontext gibts kein this. Sowas könntest du im Konstruktor von GUI machen.

Gibt es eine Möglichkeit das die Klasse Steuerung, welche ja als erstes aufgerufen wird, "unsichtbar" bleibt? Bisher kommt sonst immer ein Konsolenfenster im Hintergrund, bevor die GUI erstellt wird.
Keine Ahnung wo das Konsolenfenster her kommt, erstellst du eins in deinem Code? Oder startest du dein Programm per java.exe?
 

Medicus909

Mitglied
Das kann so nicht klappen. Im statischen Kontext gibts kein this. Sowas könntest du im Konstruktor von GUI machen.

Wie könnte ich den dann der GUI die Steuerung zeigen?
Keine Ahnung wo das Konsolenfenster her kommt, erstellst du eins in deinem Code? Oder startest du dein Programm per java.exe?
Ich starte nur meine Steuerungsklasse, welche dann die GUI erzeugt, aber vor der GUI geht ein leeres Konsolenfenster auf. Eigentlich habe ich kein Konsolenfenster im Code stehen?

Vielen Dank für eure Hilfe
 

HimBromBeere

Top Contributor
Warum erstellst du nicht einfach in deiner main zwei Instanzen der GUI-Klasse, eine für die Steuerung, eine für das Fenster.
Wenn du mit ModelViewController arbeiten willst (was generell wohl epmfehlenswert ist), solltest du aber auch eine Klasse Steuerung erstellen und nicht dafür GUI zweckentfremden.
 
Zuletzt bearbeitet:

Medicus909

Mitglied
Meine main ist ja in der Steuerung und die Steuerung wird demnach als erstes aufgerufen. Die Steuerung erzeugt dann beim Aufrufen die GUI (also das Fenster). Beim Aufrufen der GUI soll dann im Konstruktor der GUI auf die Steuerung hingewiesen werden.

EDIT: Entschuldigung ich stand auf dem Schlauch und hatte einen ziemlich großen Denkfehler :oops:
Ich hab die Main in der Steuerung drin gehabt, und die Main hat mir aber direkt die GUI erzeugt ganz ohne Steuerung :)
 
Zuletzt bearbeitet:

HimBromBeere

Top Contributor
Aaaaaah, habs jetzt erst gecheckt, wie Steuerung und main zusammenhängen. Da die main eine static Methode ist, kannst du this nicht verwenden. Du kannst aber stattdessen einfach eine neue Instanz der Klasse Steuerung erstellen und diese an an den Konstruktor der GUI übergeben.

EDIT: So viele EDITs und trotzdem ein Danke? Das lässt skeptisch werden.
Also nochmal
Java:
public class Steuerung {
    private GUI gui;
    public static void main(String[] args) {
        Steuerung steuer = new Steuerung();
        gui = new GUI(steuer);
    }
}
 
Zuletzt bearbeitet:

Ähnliche Java Themen

Neue Themen


Oben