SWT Redesign SWT Anwendung

Bernd Hohmann

Top Contributor
Ich hatte mal als Übungsaufgabe eine mittelgrosse SWT Applikation zusammengeschustert die eine schnelle Bildverarbeitung für Sportfotografen bietet. Also durchgängig Tastaturbedienung (Maus geht natürlich auch) und auf kleine Netbook-Bildschirme optimiert. Die GUIs wurden mit WindowBuilder gemacht, das möchte ich auch gerne beibehalten. Die App ist zur Zeit bei paar Anwendern zur vollen Zufriedenheit im Einsatz.

Im Anhang hab ich mal ein Foto vom Hauptfenster gemacht, was da rot umrahmt ist sind eigenständige Widgets.

Bisserl tricky ist die Tastatursteuerung, welche sich auf verschiedene Bänke verteilt (je nach Modus machen die Tasten was anderes). Im Moment ist die Tastatursteuerung ein einfacher, endlicher Automat der recht aufgeräumt über if/switch gebaut wurde - aufgeteilt auf mehrere Methoden welche die unterschiedlichen Tastaturbänke wiederspiegeln.

Etwas Ärger bereitet mir das Zusammenspiel zwischen Combos und der Tastatur: in den meissten Fällen kann ich im widgetSelected Event einer Combo ein passendes Tastaturevent faken, manchmal muss ich aber auch kleine Teile des Automaten dort abgeändert reinpacken.

Nächstes Problem sind die diversen Erfassungsmasken die um die Applikation herum aufpoppen. Entweder per Tastatur, Menuepunkt oder vom Workflow so vorgegeben (zb. soll wärend des Ladens von Bildern ab einer bestimmten Verarbeitungsstufe der IPTC-Editor aufpoppen und die Verarbeitung weiterlaufen).

Wie macht man das mit Plain SWT ordentlich?

AWT hatte den Vorteil, dass jedes Widget dort ein set//getName() hatte - damit konnte man recht schön irgendwelche propertyChange-Eventbussysteme bauen (bis man sich irgendwo im Namen vertippte und die Fehlersuche losging).

Im Moment groke ich darüber nach, für alle GUI-Elemente ein Interface für einen Eventbus einzuführen und als Event herumzuschicken "ich hätte jetzt gerne den Zustand X" (also zb. ein Bild weiterblättern - die Galerie müsste dann das nächste Bild anzeigen, das Hauptfenster sich das passende Bild aus dem Cache ziehen, das Exif-Fenster was neues anzeigen, Histogram ebenso).

Oder die Events sind einfach nur ganz primitive Events vergleichbar mit den Tastaturevents - halt nur abstrahiert.

Grundsätzlich hätte ich mit einem solchen "Eventbus" den Vorteil, dass der Unterbau sich nicht viel ändert - statt auf Tastaturevents zu lauschen wird das in in ca. 90-100 eindeutige Events aufgedröselt und ich könnte zb. den endlichen Automaten in eine eigene Klasse verlegen.

Oder wie macht man es sonst? (trööt: bitte Posting 3x lesen ehe Du schreibst).

Bernd
 

Anhänge

  • Bildschirmfoto.jpg
    Bildschirmfoto.jpg
    129,6 KB · Aufrufe: 44

Bizarrus

Bekanntes Mitglied
Ganz ehrlich?
Ich persönlich (wie du schon sagtest) würde auf 'nem Interface tendieren.

Schon alleine weil es wesentlich einfach wäre. Du müsstest ja sonst für jeden "kleinen" Mist die Events handhaben. So "Globalisierst" du es einfach über einem Interface und hast dir wohl einiges an Zeit gespart.

Außerdem hast du dann ja auch im nachhinein noch möglichkeiten die Übersichtlichkeit zu bewahren, da du ja weist, wo genau du die ganzen Funktionen implementiert hast.
 

Bernd Hohmann

Top Contributor
Außerdem hast du dann ja auch im nachhinein noch möglichkeiten die Übersichtlichkeit zu bewahren, da du ja weist, wo genau du die ganzen Funktionen implementiert hast.

Stimmt. Man muss ja nur noch den Source durchsuchen wo die Events bearbeitet werden.

Mein (hoffentlich) letztes Problem: Die gesamte Applikation dreht sich um ein zentrales Imagecache-Objekt (sieht aus wie eine Arraylist). Jedes Widget und jede Klasse muss darauf zugreifen können. Wie handhabt man sowas?

Ich kann es ganz primitiv irgendwo in einer statischen Klasse aufhängen (oder singleton) oder auch über den Eventbus einmal zum Init herumschicken. Alternativ erbt alles von einer abstrakten Klasse wo der Imagecache statisch drin hängt.

Mir gefällt keine der Methoden so recht.

Bernd
 

Sonecc

Gesperrter Benutzer
Kommt ja drauf an was du insgesamt noch machen musst.
Ansonsten kannst du ja deine Implementierung dessen verwenden. Was ich damit hatte sagen wollen war, dass JFace das eben so macht.
Damit hast du einen Anhaltspunkt wie das in Eclipse gehandhabt wird und kannst es bei dir ähnlich versuchen umzusetzen
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
MiMa Fonts, Icons, Bilder in JavaFX Anwendung AWT, Swing, JavaFX & SWT 5
I JavaFX JavaFx-Anwendung für die Erstellung einer Windows-Anwendung? AWT, Swing, JavaFX & SWT 6
P Swing Anwendung von LayeredPanel AWT, Swing, JavaFX & SWT 6
J Netbeans die JavaFX-Anwendung wird nicht ausgeführt AWT, Swing, JavaFX & SWT 16
tommybalbor JavaFx Anwendung klappt nicht für macOs Nutzern, wenn ich zwei dependecies bei maven hinzufüge AWT, Swing, JavaFX & SWT 6
thor_norsk JavaFX Anwendung stürzt ab AWT, Swing, JavaFX & SWT 4
H Fehler: Zum Ausführen dieser Anwendung benötigte JavaFX-Runtime-Komponenten fehlen AWT, Swing, JavaFX & SWT 44
G JavaFX Steuerung bzw. Test von externer JavaFX Anwendung (liegt nur als jar vor) AWT, Swing, JavaFX & SWT 9
N JavaFX Vor beenden der Anwendung durch klicken von X Dialog zeigen AWT, Swing, JavaFX & SWT 1
beli3ver JavaFX Anwendung startet nicht, kann den Fehler nicht finden (Exception in Application start method) AWT, Swing, JavaFX & SWT 1
B JavaFX Wie A4-Seite in meiner Anwendung repräsentieren AWT, Swing, JavaFX & SWT 6
B JavaFX JavaFX Anwendung deployen (entw als runnableJAR oder exe-Datei) AWT, Swing, JavaFX & SWT 15
OSchriever Anwendung aus SystemTray öffnen AWT, Swing, JavaFX & SWT 29
G JavaFX SplitPane Anwendung - Controller Probleme AWT, Swing, JavaFX & SWT 5
T Anwendung mit X schliessen AWT, Swing, JavaFX & SWT 1
L JavaFX OpenJFX13 Anwendung exportieren AWT, Swing, JavaFX & SWT 7
D PDF Viewer in SWT-Anwendung AWT, Swing, JavaFX & SWT 8
O Basics - Anwendung erstellen mit mehreren Szenen AWT, Swing, JavaFX & SWT 1
G JavaFX JavaFX-Dialog aus einer Nicht-JavaFX-Anwendung heraus AWT, Swing, JavaFX & SWT 1
A JavaFX Anwendung in Jar Datei AWT, Swing, JavaFX & SWT 8
D Swing Anwendung ohne JPanel erstellen AWT, Swing, JavaFX & SWT 1
J Splashscreen Start Anwendung AWT, Swing, JavaFX & SWT 14
MiMa Programmeinstellungen für Anwendung?? AWT, Swing, JavaFX & SWT 54
L JavaFX LoadException beim Laden von JavaFX Anwendung AWT, Swing, JavaFX & SWT 6
I JFileChooser mit System L&F bei anderem L&F der eigtl. Anwendung AWT, Swing, JavaFX & SWT 0
Blender3D Meine Swing Anwendung läuft unter Windows 10 und Ubuntu aber nicht auf Windows 7 AWT, Swing, JavaFX & SWT 16
L JavaFX PdfViewer für JavaFX Anwendung AWT, Swing, JavaFX & SWT 6
D JafaFX Anwendung beenden AWT, Swing, JavaFX & SWT 11
B Wie erstelle ich eine JavaFX Anwendung von diesem Code? AWT, Swing, JavaFX & SWT 3
javampir Swing repaint in JavaFX Anwendung AWT, Swing, JavaFX & SWT 3
X Anwendung skalierbar AWT, Swing, JavaFX & SWT 3
D JavaFX Erkennen wenn eine Anwendung geschlossen wird und etwas tun? AWT, Swing, JavaFX & SWT 4
D JavaFX Anwendung hängt sich permanent auf AWT, Swing, JavaFX & SWT 6
L JavaFX Java FX Anwendung nach MVC mit Observer Pattern AWT, Swing, JavaFX & SWT 15
X Swing Anwendung regaiert auf keine Buttons mehr wärend while(scanner.hasNextLine()) ausgeführt wird. AWT, Swing, JavaFX & SWT 4
I Variabeln speichern in Desktop Anwendung AWT, Swing, JavaFX & SWT 2
V Anwendung im Vollbild zentrieren AWT, Swing, JavaFX & SWT 13
A Swing Textübergabe innerhalb der Anwendung in unterschiedlichen Fenster AWT, Swing, JavaFX & SWT 8
GreyFox JLabel in laufender Anwendung erzeugen AWT, Swing, JavaFX & SWT 6
J JavaFX Anwendung läuft in eclipse, nicht aber exportiert AWT, Swing, JavaFX & SWT 2
P Anwendung kommt nach minimieren nicht mehr in den Vordergrund AWT, Swing, JavaFX & SWT 5
K 3D-Grafik Anwendung von Java in Gnuplot AWT, Swing, JavaFX & SWT 3
M SWT Anwendung in der Symbolleiste verstecken AWT, Swing, JavaFX & SWT 5
M Java anwendung VOR vollbildspielen (schon wieder...) AWT, Swing, JavaFX & SWT 5
S Swing Lauftext Performance Probleme, in größerer Anwendung AWT, Swing, JavaFX & SWT 6
VfL_Freak Swing Zweiter Monitor von Java-Anwendung ansprechbar ?? AWT, Swing, JavaFX & SWT 2
S Swing Ist meine gute Java Anwendung vorgängig? AWT, Swing, JavaFX & SWT 20
P Klassenaufbau bei komplexerer GUI Anwendung AWT, Swing, JavaFX & SWT 14
S Java GUI Anwendung ohne Konsole starten AWT, Swing, JavaFX & SWT 6
qwerqer Swing Anwendung soll blinken (Taskleiste) AWT, Swing, JavaFX & SWT 3
R Java Desktop Anwendung erstellen. Womit? AWT, Swing, JavaFX & SWT 3
eLogic Fullscreen anwendung aus der man nicht rauskommt AWT, Swing, JavaFX & SWT 37
T Java-Anwendung arbeitet Programm in seltsamer Reihenfolge ab AWT, Swing, JavaFX & SWT 3
H Anwendung schließen ohne System.exit AWT, Swing, JavaFX & SWT 5
R Anwendung ohne Symbol in der Taskleiste AWT, Swing, JavaFX & SWT 3
H SWT RAP Anwendung - Tabelle - Theming AWT, Swing, JavaFX & SWT 3
alderwaran Swing XML editor plugin für eigene anwendung AWT, Swing, JavaFX & SWT 2
G Swing Update-Funktion für Swing-Anwendung AWT, Swing, JavaFX & SWT 5
C Swing Eine SWING-Anwendung mittels MVC AWT, Swing, JavaFX & SWT 4
Eldorado Frage zur Anwendung des MVC-Konzept AWT, Swing, JavaFX & SWT 33
B SWT Hello World-Anwendung mit GUI in Eclipse -Problem mit Import von SWT AWT, Swing, JavaFX & SWT 9
G Applet und Swing Anwendung AWT, Swing, JavaFX & SWT 2
J Client Server Anwendung - Mehrere Clients in einer Server GUI AWT, Swing, JavaFX & SWT 11
F Anwendung auf Teskleiste legen AWT, Swing, JavaFX & SWT 3
B MDI Anwendung alle maximierten InternalFrames in Tabs AWT, Swing, JavaFX & SWT 3
T Anwendung starten AWT, Swing, JavaFX & SWT 5
J Anwendung von Swing nach SWT bzw. Eclipse portieren AWT, Swing, JavaFX & SWT 3
2 Tablet-PC Java-Anwendung -> Tablet-Pen Problem !! AWT, Swing, JavaFX & SWT 3
J Swing Anwendung schließen im Listener AWT, Swing, JavaFX & SWT 3
isowiz Vorteil einer RCP Anwendung gegenüber Swing AWT, Swing, JavaFX & SWT 3
? Java-SWT-Anwendung in der Taskleiste nicht sichtbar AWT, Swing, JavaFX & SWT 6
H Netbeans-Anwendung schliessen AWT, Swing, JavaFX & SWT 8
M "Billig Excel" Anwendung mit Swing - Aufwand ? AWT, Swing, JavaFX & SWT 4
G "Views-Abwechseln-Pro " in RCP-Anwendung AWT, Swing, JavaFX & SWT 2
H PopUp-Fenster in einer Java Server Faces Anwendung AWT, Swing, JavaFX & SWT 4
T Auf Fenster innerhalb der Anwendung zugreifen-auch elegant? AWT, Swing, JavaFX & SWT 2
G Organisation Anwendung mit mehreren Eingabedialogen AWT, Swing, JavaFX & SWT 3
H JWindow schließen bei einem Klick außerhalb der Anwendung? AWT, Swing, JavaFX & SWT 19
G SWT DatePicker funzt nicht in eigener Anwendung AWT, Swing, JavaFX & SWT 5
E Bestehende Anwendung erweitern ->JFrame in JPanel verpack AWT, Swing, JavaFX & SWT 4
U Anwendung nicht beenden beim form schliessen? AWT, Swing, JavaFX & SWT 6
T "Echte" MDI Anwendung AWT, Swing, JavaFX & SWT 4
G Auf markierten Text einer anderen Anwendung zugreifen. AWT, Swing, JavaFX & SWT 8
G Relativer Pfad in Rich Client Anwendung AWT, Swing, JavaFX & SWT 4
N Keyboard-Shortcut, der in der ganzen Anwendung funktioniert AWT, Swing, JavaFX & SWT 2
D JDIC Browser in SWT/JFace Anwendung nutzen AWT, Swing, JavaFX & SWT 2
J Swing-Anwendung mit ActionListener AWT, Swing, JavaFX & SWT 7
S Anwendung über Button beenden? AWT, Swing, JavaFX & SWT 4
O Anwendung aus dem Programm heraus neu starten AWT, Swing, JavaFX & SWT 2
U Anwendung mit mehreren "Fenstern" AWT, Swing, JavaFX & SWT 4
R Screenshot von fremder Anwendung AWT, Swing, JavaFX & SWT 4
Hotkey Freie Icons für Anwendung mit Java Look&Feel AWT, Swing, JavaFX & SWT 4
S SWT-Anwendung als startfähiges Jar unter Linux AWT, Swing, JavaFX & SWT 4
P GUI geschickt von dem Rest der Anwendung trennen AWT, Swing, JavaFX & SWT 6
S HTML-Datei in Anwendung (JEditorPane) AWT, Swing, JavaFX & SWT 5
A Screenshot einer Anwendung erstellen AWT, Swing, JavaFX & SWT 14
A MVC-Pattern - Kreuzweise Anwendung? AWT, Swing, JavaFX & SWT 4
M Komponenten einer Anwendung in JTree strukturiert auflisten? AWT, Swing, JavaFX & SWT 4
G Anwendung um Scrollpane erweitern AWT, Swing, JavaFX & SWT 2
A Look and Feel einer Anwendung verändern AWT, Swing, JavaFX & SWT 7

Ähnliche Java Themen

Neue Themen


Oben