Jestem w tej samej pozycji co OP - mam starsze aplikacje swing, ale muszę zaimplementować nowe idiomy i interfejsy, których natywnie nie obsługuje. Największa z tych aplikacji została przebudowana kilka razy z różnych powodów (poprawa modułowości, lepsza MVC i struktura wysyłania zdarzeń itp.), Więc nie jestem całkowicie przeciwny przepisywaniu kodu interfejsu użytkownika. Tak długo zastanawiałem się nad tym problemem.
Jednak niektórych rzeczy nie da się rozwiązać za pomocą Swinga bez zainwestowania dużo więcej czasu i wysiłku w to, co zasadniczo jest starszą technologią. Na przykład inne niż proste zdarzenia myszy, nowe urządzenia z ekranem dotykowym i nie są obsługiwane przez sam Swing. Zapewnienie komponentu przeglądarki opartego na Swing jest podobnie kłopotliwe lub kosztowne, aw moim przypadku podejście javafx-in-swing nie jest opcją, ponieważ komplikuje obsługę zdarzeń interfejsu użytkownika w trywialny sposób.
Myślę, że to był stary i wierny w swoim czasie, a jeśli twoja platforma jest tak niezmienna jak baza kodu - trzymaj się jej, oczywiście. Ale aby aplikacja mogła przejść do nowych, bardziej współczesnych przypadków użycia, JavaFX 2+ prawdopodobnie będzie sposobem na przejście do przodu w moim przypadku.
Na marginesie: jedynym błędem w Swing, który chciałbym, aby zniknął w jfx - ale tego nie zrobiło - jest podejście do wysyłania zdarzeń w interfejsie za pomocą jednego wątku. Każdy nietrywialny interfejs użytkownika wymaga wielowątkowości, aby interfejs użytkownika był przejrzysty i responsywny, a pozostawienie w gestii programisty aplikacji, by bez problemu natknąć się na te same pułapki, jest brakiem w IMHO API.