Конвертация в SWT: какие недостатки? - PullRequest
6 голосов
/ 22 декабря 2010

Мы планируем перенести наши приложения Swing на SWT / JFace, чтобы получить более естественный внешний вид, большую скорость рендеринга пользовательского интерфейса и меньше ошибок.

Есть ли кто-нибудь, кто уже сделал такой порт и хочет поделиться некоторой информацией, особенно о недостатках, которые мы должны ожидать? Заранее спасибо.

PS: Возможно, это должна быть вики, потому что не имеет смысла принимать один как окончательный ответ.

Ответы [ 2 ]

5 голосов
/ 22 декабря 2010

Из моего опыта:

  • SWT доступен не для всех платформ. Убедитесь, что все ваши целевые платформы поддерживаются.

  • Исправление ошибок в SWT намного сложнее, чем в Swing: большинство классов в SWT являются окончательными или содержат враждебные проверки в конструкторе, чтобы убедиться, что никто не расширяет их, пакет подписан (поэтому вы не можете просто заменить классы), и до сих пор я несколько раз пытался скомпилировать SWT из исходных кодов - и потерпел неудачу . С StakeOverflow 47 тысяч баллов можно было бы предположить, что я смогу скомпилировать код Java ...

  • Существует множество пользовательских компонентов для Swing, у SWT просто есть проект Nebula, который не очень активен. Хотя можно смешивать компоненты Swing и SWT, это не для слабонервных.

PS: я все еще предпочитаю SWT, а не Swing: -)

2 голосов
/ 26 декабря 2010

В настоящее время я делаю то же самое с приложением, которое пишу.Отсутствие встроенной поддержки - или даже правильной «эмуляции» - виджетов с Swing очень меня разочаровало.Я использую Ubuntu (и, следовательно, Gnome) при разработке, и сразу же заметил, что такие простые вещи, как выпадающие меню, совершенно неправильно отображаются с помощью Swing, но отлично работают с SWT (в Swing вокруг них не отрисовывается граница, а отключенные элементы меню отображаются полностьюиначе, чем они были бы в противном случае).

Нет огромных препятствий для преодоления, кроме того факта, что вы должны полностью переписать свои классы "View", что, вероятно, и следовало ожидать.

Когда вы говорите SWT, вам, вероятно, следует также включить JFace и RCP, если функции, которые вы реализуете, требуют этого.Они, вероятно, делают.

Последний совет: даже не смей смешивать два.Вы будете сожалеть об этом.Ваша следующая версия должна быть Swing или SWT - если вы попытаетесь взаимодействовать с ними двумя, вы столкнетесь с серьезными ошибками, которые приведут к потере клиентов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...