Swing Actions Designfrage

Zenic

Mitglied
Hi,

ich schreibe gerade zum ersten mal ein etwas größeres Interface, bei dem Aktionen an mehreren Stellen der GUI ausgeführt werden können. (Menü, Toolbar, ...) Anstatt wie bisher direkt einen anonymen Actionenlistener zu implementieren, verwende ich nun Actions.

Nun soll nach Betätigung des Buttons ein bestehendes JPanel (parentPanel) der GUI mit einem anderen überschrieben werden. Das Problem ist jedoch, dass die Action das parentPanel nicht kennt, als Lösung dachte ich, ich übergebe der Action einfach dieses Panel, welches jedoch weder dem Menü noch der Toolbar bekannt ist.

Wie löst man das am elegantesten? Soll das Panel durchgereicht werden oder vielleicht sogar statisch erreichbar gemacht werden? Sind Actions überhaupt die richtige Wahl?

danke
Zenic
 
S

SlaterB

Gast
mit Actions an sich hat das nichts zu tun, auch mit ActionListener musst du dich genauso darum kümmern,
was wo bekannt ist, was wo definiert wird

ob statisch oder durchgereicht bzw. allgemeine Fragen zu Sichtbarkeit haben ebenso mit deinem GUI-Thema nicht besonders viel zu tun,
das ist allgemein immer eine Abwägung,
wobei GUI-Komponten wie einzelne JPanel mit bestimmten Inhalt (oft gar als eigene Klasse) recht typische Kandiaten für nur einmal erzeugte Objekte sind, da ist das Ablegen in einer statischen Variable vertretbarer als in anderen Fällen

allgemein gilt: fange ruhig mit static an, sobald du Probleme damit feststellst, wirst du auf natürliche Weise zum Umschwenken gezogen,
der Lehre nach ist static nicht gut, meist aber aus für Anfänger-Belange relativ abgehobenen Gründen wie strukturierte Testbarkeit
 

slawaweis

Bekanntes Mitglied
gerade bei Swing sollte man static auf alle Fälle vermeiden, um ein flexibles System zu haben.

In diesem Fall fehlt noch eine Abstraktionsschicht. Action aus Swing ist eine Abstraktion eines GUI-Ereignisses, das unter anderem durch den User ausgelöst wird. Das, was danach das eigene Programm macht, muss nicht in der Action drin sein. Am besten wäre es eine Art Manager für Funktionalität zu haben, Beispiel:

Java:
public interface IMyUIManager
{
 public void operationA();
 public void operationB();
 public void operationC();
}

diesen Manager übergibt man an die Action. Wenn die Action ausgelöst wird, ruft sie die entsprechende Methode in IMyUIManager auf. Was darin passiert, ist der Implementierung des IMyUIManager überlassen. Der Vorteil von dieser zusätzlichen Abstraktionsschicht wäre, dass nur darin die Logik bekannt sein müsste und man es z.B. für Tests ohne eine Action aufrufen könnte. Es geht noch abstrakter:

Java:
public interface IMyUIManager
{
 public void operation(String name);
}

damit kann man über bestimmte Namen bestimmte Operationen anstoßen. Diese können auch gar nicht implementiert oder wieder verworfen sein, was der IMyUIManager mit einer entsprechenden Fehlermeldung behandelt. So bleibt die Logik an einem Ort.

Slawa
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Z Swing Java Actions AWT, Swing, JavaFX & SWT 4
H Ein Button - zwei Actions AWT, Swing, JavaFX & SWT 3
KrokoDiehl Swing Actions direkt auf der JMenuBar AWT, Swing, JavaFX & SWT 6
D Swing Storage von / Zugriff auf und durch Actions AWT, Swing, JavaFX & SWT 5
S Seltsames Problem - manchmal enthaelt die ActionMap eine JTextArea keine Actions. AWT, Swing, JavaFX & SWT 4
Daniel_L Actionmap - Standard-Actions? AWT, Swing, JavaFX & SWT 2
F Problem mit Actions, TextComponents und Focus AWT, Swing, JavaFX & SWT 2
F Wie gebe ich Parameter zwischen Actions weiter? AWT, Swing, JavaFX & SWT 2
R Button actions mit Tastatur ausführen AWT, Swing, JavaFX & SWT 6
Q Designfrage zur JMenuBar AWT, Swing, JavaFX & SWT 6
kaoZ Swing Designfrage AWT, Swing, JavaFX & SWT 21
R Swing Designfrage - Zusammenspiel Model / View AWT, Swing, JavaFX & SWT 10
J Swing JApplet Designfrage AWT, Swing, JavaFX & SWT 4
Y Swing Designfrage (MVC) AWT, Swing, JavaFX & SWT 18
J Designfrage bei rechenintensiver Operation AWT, Swing, JavaFX & SWT 7
M SWT ComboBox mit DB-Inhalten Designfrage AWT, Swing, JavaFX & SWT 5
G designfrage zu 2 panels AWT, Swing, JavaFX & SWT 2
G Designfrage zu Komonenten eines JPanels AWT, Swing, JavaFX & SWT 3
J Allgemeine Designfrage ! AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen


Oben