Muszę napisać wieloplatformową aplikację GUI do przetwarzania (w wielu wątkach) i wizualizować dość duże ilości danych. Idealnie aplikacja powinna być stosunkowo szybka i dobrze wyglądać.
Interfejs aplikacji będzie się składał z widżetu tabeli, widżetu drzewa i niestandardowego widżetu do rysowania figur. Użytkownik będzie mógł modyfikować dane z dowolnego z tych widżetów, a zmiany powinny zostać natychmiast odzwierciedlone w innych widżetach.
Oczywiście planuję użyć MVC. Jednak zwykle wykonuję całe moje programowanie GUI w C ++ / Qt i mam bardzo ograniczoną ekspozycję na Javę. Byłbym więc bardzo wdzięczny za wszelkie porady dotyczące organizacji takiej aplikacji w Javie. W szczególności, czy powinienem używać Swinga czy JavaFX? Jakie widżety wybrałbyś do pracy? Czy możesz polecić jakieś książki / samouczki online, które obejmują te aspekty platformy Java?
Będę bardzo wdzięczny za wszelkie opinie. Dzięki!
(to pytanie zostało pierwotnie opublikowane w serwisie Przepełnienie stosu , ale ta witryna została zaproponowana jako bardziej odpowiednie miejsce do zadawania pytań)
Idź z wzorca Model-View-prezenter zamiast. Możesz zobaczyć dobry przykład MVP w Swing tutaj poprzez projekt mvp4j .
Nie będąc Swingiem, sprawdziłbym także artykuły MVP na stronie GWT Google Developers, aby uzyskać więcej informacji na temat tego wzorca i sposobu jego zastosowania w Javie; te same zasady projektowania stoją niezależnie od ramy, a GWT jest bardzo podobny do Swing.
Szybki przegląd działania MVP:
Po prawidłowym wdrożeniu MVP sprawi, że twoja aplikacja będzie bardzo oddzielona i pozwoli ci na modyfikacje bez zakłócania innych obszarów twojej aplikacji.
Edycja: W oparciu o twoją decyzję o użyciu JavaFX, polecam sprawdzenie następujących artykułów
źródło
Wymagane widżety można znaleźć zarówno w Swing, jak i SWT . Dokumentacja zawiera przykłady komponentów (Swing) lub widżetów (SWT), więc ich identyfikacja będzie dość łatwa.
Swing to biblioteka GUI zawarta w JDK i zbudowana od podstaw. SWT jest zewnętrznym, a komponenty są oparte na natywnych.
Jeśli chodzi o MVC, oba mają wsparcie dla niego. W Swing masz model dla każdego komponentu, który praktycznie zapewnia podstawowe dane. Sam komponent to zarówno widok, jak i kontroler.
źródło