OOP Trennung der GUI von der Logik

S

sdfeaxcvbjrfgd

Gast
Hallo Leute,

habe ein paar fragen zur Trennung von GUI Logikm bzw. Events. Habe ein paar gute Beispiele gefunden, siehe: Guido Krger - JAVA 1.1 lernen - Kapitel 18 Entwurfsmuster fr den Nachrichtenverkehr (Variante 3)

Habe versucht noch mehr über diese Variante herauszu finden, jedoch sind es immer die selben Beispiel Quellcodes die verwendet werden.

Habe dazu nun die Frage wie ich zum Beispiel per ActionListener ein Label auf meinem Frame ändern kann.

Gibt es da vielleicht Beispiele, genauere Anleitungen?
 

jstei001

Aktives Mitglied
How to Write an Action Listener (The Java™ Tutorials > Creating a GUI With JFC/Swing > Writing Event Listeners)

Einfhrendes Beispiel

Da sind zwei Beispiele mit einem Label funktioniert das genauso.

Wie willst du denn den ActionListener auslösen lassen? Per Button in der GUI oder per Taste auf dem keyboard? Im Prinizip hat ein label auch die funktion setText oder sowas ähnliches die rufst du in der Methode ActionPerformed im Listener auf und den Listener legt man auf einen Button mit Button.addActionListener.
 

njans

Top Contributor
Schau dir mal das Model-View-Controller Muster an (MVC). Da wird die Aufteilung auch vorgenommen, sollte auch genug Beispiele geben.
 
S

sdfeaxcvbjrfgd

Gast
Danke für eure Antworten. Das mit dem MVC hatte ich mir auch schon überlegt. Jedoch soll es nur eine einfache GUI sein und ich denke da lohnt sich so etwas nicht.

Das Einführende Beispiel ist leider nicht das was ich erhofft habe, da dort ein neues Optionen Panel erstellt wird ich will aber meine Events in eine Fremde Klasse auslagern
 

jstei001

Aktives Mitglied
Was genau willst du denn machen auslagern kann man ja (fast)alles in Java, einfach den code in eine neue Klasse kopieren und in eine Methode packen, alle Objekte kannst du als Parameter übergeben auch an andere Klassen.
 
S

so0jvpwemm

Gast
Danke für eure Antworten. Das mit dem MVC hatte ich mir auch schon überlegt. Jedoch soll es nur eine einfache GUI sein und ich denke da lohnt sich so etwas nicht.

Das Einführende Beispiel ist leider nicht das was ich erhofft habe, da dort ein neues Optionen Panel erstellt wird ich will aber meine Events in eine Fremde Klasse auslagern
Bei einfacheren GUIs benötigt man nicht unbedingt ein Model, wenn man Model und View zusammenfast und nur den Controller beläst, hätte man doch das was Du willst. Oder habe ich da was falsch verstanden?
 
S

sdfeaxcvbjrfgd

Gast
Naja, mein problem ist es eigentlich das die Klasse EventHandling die GUI sehen muss, jedoch zusätzlich in der Klasse GUI eine Instanz von sich erstellt.

Das ist momentan mein größtes Problem, wie kann ich das umgehen?
 
S

sdfeaxcvbjrfgd

Gast
Ne. So meinte ich das nicht.

Also ich habe mein View Klasse. Dort wird im Konstruktor meine GUI gebaut.

Die Events für z.B meinen Button will ich nun in eine andere Klasse auslagern. Das heißt Konkrett die Klasse View bracht eine Instanz von der Event Klasse. Jedoch muss die Event Klasse auch die Variablen der View Klassen kennen. Um z.B auf Klicks mit Änderungen reagieren können.
 

Michael...

Top Contributor
Die Events für z.B meinen Button will ich nun in eine andere Klasse auslagern. Das heißt Konkrett die Klasse View bracht eine Instanz von der Event Klasse. Jedoch muss die Event Klasse auch die Variablen der View Klassen kennen. Um z.B auf Klicks mit Änderungen reagieren können.
Die Klasse View braucht keine Instanz bzw. Referenz auf eine Instanz der Klasse Event. Sie muss ja nur eine Instanz der Klasse erzeugen (und dieser eine Referenz auf sich übergeben). Damit die Klasse bzw. die erzeugte Instanz von Event Änderungen in View anstossen kann, muss diese nicht die Variablen kennen bzw. Zugriff auf diese haben. Wenn die Klasse View entsprechende Methoden anbietet (z.B. updateStatus(....)) reicht es, diese zu kennen. Wenn man das ganze stärker entkoppeln will könnte man diese Methoden in einem Interface definieren, welches die Klasse View implementiert. Die Klasse Event müsste dann nur dieses Interface kennen.
 

Ullenboom

Bekanntes Mitglied
Es gibt mehrere Stufen, View von der Logik (Controller/Presenter/Activity) zu trennen. *Einfach* ist folgende Variante: Es gib eine doofe Klasse für die View (passive View) ohne Listener-Anmeldung und Logik. Dann gibt es eine Klasse Presenter, die auf die View zurückgreift und auch Listener anmeldet und auch Service-Methoden aufrufen kann. Die Trennung kann man nun weiter durchziehen, Interfaces deklarieren, lala, aber diese Variante hier ist ein guter Anfang. Pseudocode:

Java:
class View extends JPanel {
  public JButton b = new JButton("Klick mich härter");
  View() {
    add(b);
 }
}

class Presenter {
 private View v = new View();
 Presenter() {
    v.b.addActionListener( ... );
 }
 JComponent getView() { return v; }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Z GUI und Logik - Trennung Java Basics - Anfänger-Themen 2
L Wie Trennung von Logik und Ausgabe? Java Basics - Anfänger-Themen 6
W Befüllung einer Tabelle mit Checkbox, Trennung GUI und Model Java Basics - Anfänger-Themen 5
M Arrays: Trennung von Daten und Darstellung Java Basics - Anfänger-Themen 1
A Dateiexplorer - Trennung Daten und Ansicht Java Basics - Anfänger-Themen 3
H trennung von string Java Basics - Anfänger-Themen 11
D unklare Meldung nach Code-Trennung Java Basics - Anfänger-Themen 3
M Trennung von Gui und Datenversorgung Java Basics - Anfänger-Themen 2
8 Hilfe bei Trennung von GUI und Verarbeitung Java Basics - Anfänger-Themen 12
S Benutzung von Thread -> Trennung GUI und Berechnungen &lt Java Basics - Anfänger-Themen 2
H Tic Tac Toe Logik kürzer fassen Java Basics - Anfänger-Themen 8
I Logik Zahlungsprozess - Wann Bestellobjekt anlegen? Java Basics - Anfänger-Themen 2
H Logik Fehler erkennen Java Basics - Anfänger-Themen 21
M Kann mir jemand hier die Logik vermitteln? Java Basics - Anfänger-Themen 3
M Kann mir jemand die Logik erklären? Java Basics - Anfänger-Themen 1
Hias12345 Schach(Springer Logik) Java Basics - Anfänger-Themen 27
C Array-Werte werden gemischt, ohne Logik Java Basics - Anfänger-Themen 2
R Best Practice Logik in der Datenbank oder in Java? Java Basics - Anfänger-Themen 3
B Logik Upgrade / Downgrade Java Basics - Anfänger-Themen 13
I Hilfe bei der Logik Java Basics - Anfänger-Themen 9
A Minesweeper Logik Java Basics - Anfänger-Themen 10
D Logik von GUI trennen Java Basics - Anfänger-Themen 3
Meeresgott OOP Gui, Logik und Datenbank richtig aufbauen Java Basics - Anfänger-Themen 43
V Memory Logik Problem/Denkblockade, bitte helft Java Basics - Anfänger-Themen 1
Z Jump and Run - Grafik,Logik und GUI trennen Java Basics - Anfänger-Themen 4
P fibonacci - do while Statement Logik Fehler Java Basics - Anfänger-Themen 5
H Logik Frage Java Basics - Anfänger-Themen 3
X Methoden Logik-Problem mit Schleifen. Java Basics - Anfänger-Themen 7
kaoZ Logik und Gui trennen Java Basics - Anfänger-Themen 3
S Logik knobeln... Java Basics - Anfänger-Themen 4
G Klassen Von Logik auf TextField in der GUI zugreifen Java Basics - Anfänger-Themen 14
V Verstehe die Logik nicht ... Java Basics - Anfänger-Themen 30
F While Schleife - Logik ? Java Basics - Anfänger-Themen 5
B Logik von verschachtelten For Schleifen Java Basics - Anfänger-Themen 6
Luk10 Logik/Mathe Problem Java Basics - Anfänger-Themen 6
M Logik in Java Java Basics - Anfänger-Themen 4
K java.util.ConcurrentModificationException problem in der Logik? Quaxli-Tutorial Java Basics - Anfänger-Themen 9
S Frage zu Verständnis und Logik Java Basics - Anfänger-Themen 5
K Logik in if-Bedingung Java Basics - Anfänger-Themen 2
T Hilfe - Ein Logik Problem Java Basics - Anfänger-Themen 17
sliwalker Wie löse ich eine "DfB-Pokalauslosung"?Logik fehlt Java Basics - Anfänger-Themen 5
T Problem mit der Logik von Switch und do-while Java Basics - Anfänger-Themen 3
G die Logik für eine Buchung! Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben