Swing-Frontend abhängig von ausgewähltem Objekt

muckelzwerg

Bekanntes Mitglied
Hey, folgende Situation.
Ich habe eine Swing-Oberfläche mit der ich den Zustand verschiedener Objekte anzeige. Die Objekte werden über einen JTree ausgewählt.
Diese Objekte haben verschiedene "Debug-Funktionen". Diese Funktionen sollen nun in der Oberfläche zur Verfügung gestellt werden.
Ich habe bspw. ein Objekt "IR-Camera", welches die Funktion "calibrate()" anbietet. Diese Funktion/Methode soll im Frontend als Button angeboten werden. Was dann weiter passiert ist erstmal offen.

- Die Objekte sollen eigentlich keine Swing-Funktionalität besitzen. Ein "zeichne hier deine objektspezifischen Steuerelemente" soll nicht sein. Wenn überhaupt müssen die Funktionen von außen ermittelt und dann entsprechende Elemente erzeugt werden.

- Der Objekttyp entscheidet zwar, welche Funktionen angeboten werden, allerdings müssen das nicht unbedingt alles Methoden der Objekte sein. Es kann also z.B. sein, dass die Funktion "calibrate()" nicht vom Kameraobjekt ausgeführt wird, sondern von einem anderen Objekt (welches der Kamera nicht bekannt ist) und die Kamera letztlich nur ein Parameter ist.
Insofern wäre da vielleicht ein Lösung über Wraper, oder Dekorationen eine gute Idee.

Hat jemand Ideen? (Bin kein Swing-Profi, kann also gut sein, dass ich was Naheliegendes übersehen habe.)
 

Marco13

Top Contributor
Mehr als "Kommt drauf an...." kann man da kaum sagen. Nach welchen Kriterien (und wann und wo) wird denn entschieden, welche Funktionen da im GUI zu sehen sein sollen?
 

muckelzwerg

Bekanntes Mitglied
Also ich denke, dass ich es nahezu 100% vom Objekttyp abhängig machen kann.
Ich könnte also eine oder mehrere Klassen schreiben, in denen das Wissen über die "Sonderfunktionen" einer oder mehrere Klassen gespeichert ist.

Schön wäre natürlich wenn es auch instanzabhängig ginge und die Objekte z.B. ein paar einfache Methoden ohne zusätzliche Dialoge oder Rückgabewerte auch selbst anbieten könnten.
Eine Kamera könnte z.B. eine Funktion "reset()" oder "stop()" anbieten, weil eben genau diese eine Kamera das kann.
Oder vielleicht eine Funktion "rotate()", weil genau diese Kamera einen Motor besitzt.
Daraus sollte dann im Frontend lediglich ein einzelner Knopf werden, der die Funktion ausführt.
Diese Funktionen müssen nur irgendwie aus den Objekten "rausgesucht" und z.B. in JButtons umgesetzt werden.
"Wie?" ist die Frage. ;)

Demgegenüber kann mit jeder Kamera "calibrate()" ausgeführt werden. Da wird dann vermutlich ein Dialog aufgehen, der erstmal die Art der Kalibration erfragt. Das ist also schon viel zu viel "Zeug", was nicht mehr in die Kameraklasse gehört.
Da könnte wie gesagt ein "Wrapper" verwendet werden, der jedes Kameraobjekt kapselt und pauschal diese und andere Funktionen anbietet.


Aber so richtig glücklich bin ich mit keiner Vorstellung. Ich will nicht, dass eine Kameraklasse Swing-Code enthält. Ich will aber auch nicht unbedingt alle Klassen "doppelt" schreiben müssen, nur um da eine Trennung zu erzeugen.
Ich hatte kurz gedacht, man könnte es über die Rendererklassen machen. So wie man einen CellRenderer überschreibt.
Der könnte ja den Typ prüfen und dann den Standardumfang an Funktionen selbst hinzufügen (oder delegieren).
Ich wüsste aber jetzt keine Komponente, in die man das schön reingefummelt bekommt.
Die Objekte werden in einer JTable angezeigt. Ich könnte theoretisch Funktionen anbieten, indem ich bestimmte Felder dann mit JButtons fülle. Aber ist das cool?
 

Marco13

Top Contributor
So ganz ist mir nicht klar, worum es geht. Erstmal vorneweg: Natürlich sollten die Klassen, die eigentlich nichts mit Swing zu tun haben (sondern nur im Moment zufällig von einer Swing-GUI gesteuert werden sollen) keinen Swing-Code enthalten.
Ansonsten... könnte es sowas wie eine
interface ControlDialog { void setControlledObject(Object x); }
Map<Class<?>, ControlDialog> dialogs = ...
geben, wo für jede Objektart die passenden Dialoge drinliegen.

Man kann auch automatisch die angebotenen Methoden raussuchen, z.B. mit reflection, aber welche davon im GUI angeboten werden sollen, weiß man ja nicht.

Ein Beispiel:
Code:
class Camera
{
    void calibrate() { ... }
    void move(float x) { ... }
    void doSomethingSecret() { ... }
    void process(List<Camera> others) { ... }
}
Wer soll wo wann bestimmen, dass man einen Button für "calibrate" haben soll, und einen Slider für "move(x)", und sonst nichts?
 

muckelzwerg

Bekanntes Mitglied
Das ganze ist auch mir noch nicht so 100% klar.
Ich habe irgendwo ein Panel, innerhalb dessen die Daten und Schaltflächen des aktuellen Objekts liegen.
Da werde ich jetzt erstmal generische Schaltflächen einbauen, die abhängig vom Objekttyp angeboten werden oder nicht.
Da entscheidet die Frontendklasse dann selbst, ob sie für das Objekt zusätzliche Elemente hinzufügen kann, oder nicht.

Für Frontendfunktionen, die von den Objekten selbst angeboten werden, warte ich mal ab, wie sich der erste Teil entwickelt.
Evtl. rutscht das sogar in Richtung Webservice-Frontend generieren ab und da hab ich grad null bock drauf. ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Kochbuch bzw. Rezepte-Datenbank app mit Swing..? Allgemeine Java-Themen 5
I Swing GUI / Webapp..... benötige ein paar Tips / Ratschläge Allgemeine Java-Themen 18
KeTho1712 Java Swing: JTable standardmäßig füllen, sodass bei Start bereits Datensätze gespeichert sind Allgemeine Java-Themen 1
C Swing File[] als klickbare links in irgendeinem Swing Element Allgemeine Java-Themen 3
RalleYTN 2D-Grafik Bild ohne AWT, Swing und JavaFX rotieren Allgemeine Java-Themen 12
T Methoden Swing/Graphics/draw Allgemeine Java-Themen 6
Blender3D Java Swing Programm Windows 10 Autostart Problem Allgemeine Java-Themen 2
N GUI Interface, swing Allgemeine Java-Themen 7
J Swing Cursor.WAIT funktioniert nicht nach JFileChooser Allgemeine Java-Themen 1
V Input/Output Swing Icons in Jar Archiv laden Allgemeine Java-Themen 10
M for Schleife mit Swing Button abbrechen Allgemeine Java-Themen 7
O Swing + EJB Allgemeine Java-Themen 4
M JavaFX-Gegenstück zu Swing-Button-DoClick-Methode Allgemeine Java-Themen 5
eskimo328 Swing Client Anwendung für MAC OS (Update Routine) Allgemeine Java-Themen 6
T HTTP HttpWebRequest in Swing-Projekt nutzen Allgemeine Java-Themen 4
G Input/Output Manuelle Änderung von Wert in Swing Komponente bemerken! Allgemeine Java-Themen 2
K Threads - Swing - Synchronisation nötig? Allgemeine Java-Themen 8
J [SWING]Elegante Java Formular Lösung? XML? Allgemeine Java-Themen 4
I Swing Welche Swing Komponente soll ich nehmen? Allgemeine Java-Themen 2
L Web-Framework und Swing Framework o.ä Allgemeine Java-Themen 15
Y Anwendung starten(JAR) - Entscheidung Konsole oder Swing Allgemeine Java-Themen 5
A Swing paintcomponent komischer Fehler Allgemeine Java-Themen 6
algorismi Google maps in Java Swing Allgemeine Java-Themen 2
nrg Swing 2 Fragen zu Swing/AWT Allgemeine Java-Themen 7
T Jakarta Objekt (Excel Sheet) in Swing/SWT einbetten Allgemeine Java-Themen 3
D Organigramm mit GWT oder Swing Allgemeine Java-Themen 4
E Swing hilfe, JWindow mit eintrag in taskleiste Allgemeine Java-Themen 2
M Name der Swing Komponente Allgemeine Java-Themen 3
A awt und swing Allgemeine Java-Themen 3
MQue Swing-Componenten -> JavaBean Allgemeine Java-Themen 5
H Schrifthöhe berechnen / Swing Allgemeine Java-Themen 5
Z Swing vs Konsole Allgemeine Java-Themen 17
T Wo ist javax.swing.TransferHandler enthalten? Allgemeine Java-Themen 10
ARadauer Scaffolding für Swing Anwendungen Allgemeine Java-Themen 4
? Swing Anwendung aus Konsole starten Allgemeine Java-Themen 7
H Webseiten aus Swing Allgemeine Java-Themen 4
B SBCC - Swing Better Components Collection - downloadlink ? Allgemeine Java-Themen 5
G Feld Validierung in Swing Programm Allgemeine Java-Themen 6
G Swing Validierungs Framework Allgemeine Java-Themen 2
A Klappmechanismus bei Components(SWING) Allgemeine Java-Themen 8
M Swing funktioniert und funktioniert nicht Allgemeine Java-Themen 4
O Swing oder JMF Problem Allgemeine Java-Themen 11
M Swing JButton Farbe zurücksetzen Allgemeine Java-Themen 6
P RTF dynamisch machen (IText, Swing) Allgemeine Java-Themen 4
E Thread Fragen in Verbindung mit Swing Allgemeine Java-Themen 4
G java applet mit swing -> hundert prozent cpu auslastung Allgemeine Java-Themen 11
S Swing-Projekt zum Üben Allgemeine Java-Themen 5
I Servlet von einem Swing Based GUI aufrufen Allgemeine Java-Themen 5
D Spezielles Eingabefeld für Numerische Werte in Swing Allgemeine Java-Themen 2
G Swing vs. RCP Allgemeine Java-Themen 9
T substring() und Swing setText() Allgemeine Java-Themen 6
A Hibernate und Swing Allgemeine Java-Themen 2
S SWING Problem Allgemeine Java-Themen 2
S SWING UND AWT!Problem wegen Canvas! Allgemeine Java-Themen 29
clemente Swing Applikation killt kwin Prozess (unter Linux / KDE) Allgemeine Java-Themen 3
T Exception at javax.swing.plaf.basic.BasicTableUI.paintCell Allgemeine Java-Themen 3
S Swing - Problem mit Fenster-/Komponenten-Größe Allgemeine Java-Themen 3
M swing und windows registry Allgemeine Java-Themen 11
A Swing hat ein leicht verändertes Aussehen, wie findet ihrs? Allgemeine Java-Themen 28
M Was soll ich benutzen? Java2D, Java3D, Swing, AWT?? Allgemeine Java-Themen 21
U Frage zu Swing Allgemeine Java-Themen 4
B Hintergrund bei Swing Allgemeine Java-Themen 6
K swing frage (komisches swing) <-- manoman was für n threa Allgemeine Java-Themen 2
J Chatprog schließen,AWT + Swing Allgemeine Java-Themen 4
P Reordering einer Tabelle im Frontend Allgemeine Java-Themen 1
S Welche Java Techologien gibt es fürs Frontend Allgemeine Java-Themen 4
P Frontend- Zugriff auf WS- Backend Allgemeine Java-Themen 0
B Technikfrage bzgl Verbindung von Frontend und Backend Allgemeine Java-Themen 0
D Grafisches Frontend zu einem Java Prozess erstellen Allgemeine Java-Themen 0
M Access Frontend als Webanwendung Allgemeine Java-Themen 8
P DB-Applikation mit GWT-Frontend Allgemeine Java-Themen 3
R Geometry erstellen die abhängig von Variablen ist Allgemeine Java-Themen 6
Thallius Warum ist dieser Code OS abhängig? Allgemeine Java-Themen 10
aokai Testen von Klassen die abhängig von Stdlibs URL sind Allgemeine Java-Themen 3
GambaJo Pfad zum Userprofil abhängig vom OS (/home Dok&Einst. us Allgemeine Java-Themen 3
G Generics in Map. Type of value abhängig vom key Allgemeine Java-Themen 3
S synchronisation einer Methode abhängig vom Parameter Allgemeine Java-Themen 10

Ähnliche Java Themen

Neue Themen


Oben