Derzeit lerne ich JavaFX und habe mich dafür entschieden, ein kleines Projekt in Form eines ‚Docks‘ umzusetzen. Ziel dieses Projekts ist es, am unteren Bildschirmrand eine Leiste zu erstellen, auf der Programm-Icons abgelegt und direkt gestartet werden können.
Projekt Idee
Auf dieses Projekt bin ich im Rahmen des Udemy-Kurses ‚JavaFX – Java Programme mit Oberflächen / GUIs erstellen‚ gestoßen.
Dabei habe ich meine eigene Interpretation entwickelt und das Projekt nach meinen Vorstellungen erweitert und verbessert.
Struktur
Ich starte mit einem MVC (Model View Control) Ansatz und strukturiere so mein Programm.
View
Im View erstelle ich mein Dock
Bilder laden in JavaFX
Um ein Bild in JavaFX zu laden und dabei potenzielle Pfadprobleme zu vermeiden, nutzen wir einen Stream. Dadurch können wir sicherstellen, dass das Bild unabhängig vom Speicherort korrekt geladen wird.
Programm Beenden
Ich habe eine eigene Model-Klasse erstellt, die einen MouseEventHandler bereitstellt. Bei einem Doppelklick wird das Programm beendet. Anschließend habe ich im Controller alles miteinander verknüpft, und damit funktioniert das grundlegende Dock.
Icons
Für die Icons habe ich eine eigene View-Klasse erstellt, in der alle Standardwerte sowie Zoom-In/Out-Effekte definiert sind. Dadurch vermeide ich redundanten Code und mache das Projekt insgesamt wartbarer.
Klickbar machen
Im Controller wird eine Liste der Icons durchgegangen und das Event Model gesetzt.
Meine Model-Klasse, die das Event verarbeitet, fragt zunächst das Betriebssystem ab, um dessen Namen zu ermitteln. Anschließend wird ein Pfad überprüft, um zu erkennen, welches Icon geladen werden soll. Dabei wurde für Mac und Windows jeweils ein Pfad definiert, wobei es bei Windows schwierig ist, den Installationsort des Benutzers vorherzusagen.
Daher plane ich, in einer zukünftigen Version des Projekts den Pfad editierbar zu machen.
Transparents und Position
Zum Abschluss wurden noch Effekte wie Transparents und die richtige Positionierung umgesetzt.
Abschluss und Zukunft
Dieses Projekt war für mich ein spannendes erstes Vorhaben, das im Kurs gut erklärt wurde und mir viele Anregungen gab, meine eigene Version zu entwickeln.
Derzeit sind noch einige Elemente, wie die Pfade und Bilder, fest kodiert. In zukünftigen Versionen möchte ich diese Bereiche verbessern, um die Möglichkeit zu schaffen, neue Icons dynamisch hinzuzufügen.