Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
MethodenMethode der GUI-Klasse Zugriff auf Methoden der Hauptklasse
Ich sitze im Zug und stehe grad voll auf dem Schlauch und komme nicht weiter.
Ich habe ein Programm mit 2 Klassen. Klasse 1 enthält alle Programmlogik-Methoden und die main-Methode.
Klasse 2 erschafft und verwaltet die GUI und die Darstellung. Es gibt dort auch nur 2 Buttons. Nun mein Problem: Die ActionPerformed-Methoden sind ja in der GUI-Klasse (dessen Object ein Attribut der Hauptklasse ist). Wenn ich dort auf den Button drücke, soll nicht nur die Darstellung gesteuert werden, sondern ich möchte auch Methoden der Klasse1 aufrufen, was aber nicht geht.
Sicher ist das eine dumme Frage, aber ich komme grad nicht weiter... und ihr habt mir schon sooo oft geduldig weitergeholfen
args, das selbe Problem: wenn ich bei den Buttons den ActionListener adden möchte, dann fehlt mir der Zugriff auf die Hauptklasse.
Warscheinlich habe ich den AL eh falsch/schlecht erstellt. Ich habe nach implements ActionListener die Methode actionPerformed überschrieben. Daher kann ich aus der Methode der GUI-Klasse nicht auf diese Methode der Klasse 1 zugreifen.
Wie ich mehrere AL erstelle (für jeden Button einen eigenen) weiss ich leider nicht (außer natürlich als anonyme innere KLasse)
Dein Konzept ist MV ( Model View ), da ist es unumgänglich, dass beide Klassen voneinander wissen müssen.
Sonst wäre MVC (Model View Controller ) die Lösung die Du vielleicht anstreben möchtest. Controller weis von Model und von View. Aber View und Model sind unabhängig.
Bei der MV Variante könnte man über den Commandstring der Actionperformed Methode den Button erkennen, der gedrückt wurde und das Model entsprechend reagieren lassen.
ich nutze einen ActionCommand. ich frage mich halt nur, wie ich den ActionListener adden soll, wenn die actionPerformed-Methode unerreichbar ist.
EDIT: ich könnte natürlich die GUI-Erstellung & Steuerung auch in die Main-Klasse verschieben, aber dann stehen der OOP endgültig die Haare zu Berge...
Im Zug programmieren ist doch eh ungünstig. Alle schauen einen in der 2. Klasse abfällig wie ein Alien an. Setz dich lieber später zuhause/daheim nochmal ran.
Klasse 2 musst du eine Referenz des Objekts von Klasse 1 "mitgeben".
Da Klasse1 den ActionListener implementiert.
Klasse1 myModel = ...
Klasse2 myGUI new Klasse1( myModel );
In Klasse2 ist jetzt nur ein ActionListener sichtbar.
Kann man zwar auf Klasse1 casten aber direkt ist der Zugang zum Model verwehrt. Bei wirklicher Trennung brauchst Du eine 3te Klasse. (MVC).
Ich habe ein Programm mit 2 Klassen. Klasse 1 enthält alle Programmlogik-Methoden und die main-Methode.
Klasse 2 erschafft und verwaltet die GUI und die Darstellung. Es gibt dort auch nur 2 Buttons.
Wenn Klasse1 eine reine Businesslogik-Klasse ist, und Klasse2 eine Gui-Klasse, gehört die actionPerformed in Klasse2, eventuell auch implementiert in einer anonymen inneren Klasse. Damit in der actionPerformed der Aufruf von Methoden der Logik-Klasse möglich ist, braucht Klasse2 natürlich eine Referenz auf eine Instanz von Klasse1. Eine Business-Logik-Klasse sollte mMn kein AcrtionListener sein, aber ein ActionListener braucht ggf. eine Referenz auf eine Instanz einer Logik-Klasse, um deren Methode aufzurufen.