Я нахожусь в той же позиции, что и OP - у меня есть устаревшие свинг-приложения, но мне нужно реализовать новые идиомы и интерфейсы, которые он изначально не поддерживает. Самое большое из этих приложений было реорганизовано несколько раз по разным причинам (улучшение модульности, улучшение MVC и структуры диспетчеризации событий и т. Д.), Поэтому я не совсем против переписывания кода пользовательского интерфейса. Так что я долго думал над этим вопросом.
Тем не менее, некоторые вещи не могут быть решены с помощью Swing без больших затрат времени и усилий на то, что по сути является устаревшей технологией. Например, кроме простых событий мыши, новых устройств с сенсорным экраном и не поддерживается самим Swing. Предоставление компонента браузера на основе Swing аналогично хлопотно или дорого, и в моем случае подход javafx-in-swing не является вариантом, так как он усложняет обработку событий пользовательского интерфейса нетривиальными способами.
Я думаю, что он был старым и верным в свое время, и если ваша платформа так же неизменна, как и ваша кодовая база - придерживайтесь ее, очевидно. Но для того, чтобы приложение перешло в новые, более современные варианты использования, JavaFX 2+, вероятно, будет способом продвижения вперед в моем случае.
В качестве дополнительного примечания: единственное неверное решение в Swing, которое я бы хотел, чтобы он исчез в jfx, но не сделал этого, - это подход «один поток для правила их всех» при отправке событий пользовательского интерфейса. Любой нетривиальный пользовательский интерфейс нуждается в многопоточности, чтобы пользовательский интерфейс был четким и отзывчивым, а оставление приложения одним и тем же способом легко преодолевать те же ловушки - недостаток в API IMHO.