JavaFx - ćwiczenie
Dziś zrobiłam małe ćwiczenie z programowania: zaimplementowałam klienta GUI do projektu bggen w javafx.
Ćwiczenie z JavaFX
Ćwiczenie obejmowało:
- dodanie modułu java o nazwie fxclient
- zdefiniowanie zależności w pom.xml tak, abym nie musiała instalować modułu openjfx w systemie, tylko żeby maven je elegancko ściągnął do lokalnego repozytorium
- użycie pluginu do javafx, aby można było łatwo uruchamiać projekt z wiersza poleceń
- zdefiniowanie modelu widoku przechowującego parametry potrzebne do wygenerowania obrazka
- zdefiniowanie widoku/kontrolera umożliwiającego generowanie
Klienta w Swingu zrobiłam chyba miesiąc temu. To doświadczenie mogę porównać z pływaniem w kisielu. A dziś - szast, prast, jest! Jak przyjemnie! Tym razem pływałam w mocno osolonym Adriatyku.
Porównanie interfejsów
Oto porównanie dwóch interfejsów:
JavaFx - piękno biblioteki
To naprawdę świetnie napisana biblioteka. Łatwość jej używania w przypadku takich mini-interfejsów jest naprawdę imponująca:
-
łatwo dodać mnemoniki do kontrolnych elementów interfejsu (uwidaczniają się po przyciśnięciu Alt
-
system dynamcznych propertiesów, które można “zbindować” z kontrolkami interfejsu daje ogromne możliwości zaprojektowania ciekawego GUI
-
domyślny motyw JavaFx jest po prostu estetyczny (przynajmniej na moim ubuntu) i miło się go używa
JavaFx - moje potknięcia
Jest kilka rzeczy, o których muszę pamiętać:
- patrzeć zawsze na aktualną dokumentację API
- najpierw zdefiniować zależność w mavenie, później napisać “requires …” w module-info.java, a na końcu próbować importować klasy do kodu
- miałam problem z klasą SwingFXUtils, która nie była widoczna, dopóki nie dodałam zależności w pom.xml do javafx-swing, a później w module-info.java nie dodałam “requires javax.swing;”
Notatki na boczku
Archetyp Mavena
|
|
Przykładowy pom, archetypy i plugin
|
|
Import w IntelliJ możliwy po dodaniu wymaganych modułów
IDE importy będą się “resolwować” po ustawieniu “requires” w module-info:
|
|
Wnioski
Tworzenie inferfejsów użytkownika w tradycyjnych aplikacjach desktopowych to dziedzina, od której rozpoczynałam karierę zawodową w IT (wtedy był to Swing i java 1.4). Wracam teraz po latach do frontendu. Co widzę? JavaFx wyrzucony z biblioteki standardowej, a cały świat odchodzi od desktopa i buduje aplikacje w JavaScript.
Cóż, warto pewnie znać JS “na poziomie konwersacyjnym”. Jednak budowanie interfejsów w webówce to jeden wielki bałagan.
Mam nadzieję, że dziś wciąż tworzy się nowe aplikacje desktopowe.
Myślę, że nie warto porzucać tak dobrze zdefiniowanej, solidnej, ustandaryzowanej (posiadającej Human Interface Guidelines) dziedziny, jaką są interfejsy w aplikacjach desktopowych. Doświadczenie programistów mojego pokolenia zostało zapisane w bibliotekach takich jak Swing, JavaFx, QT, GTK. Nad problemami w tej materii myślało wielu mądrych ludzi. A dziś - młodzież podczas tworzenia interfejsów w JavaScript zaczyna te problemy dopiero zauważać, nazywać i definiować.
W wolnej chwili poczytam więcej o JavaFx.