2009-03-06 3 views
3

Мне было интересно, есть ли у кого-нибудь опыт в попытке запустить сложный пользовательский интерфейс SWT, размещенный внутри компонента Swing.Запуск компонентов SWT в приложении Swing

Мне удалось получить очень простую демоверсию, но если кто-то еще попытался и не смог/не смог это сделать, было бы здорово учиться на их опыте.

Так, чтобы повторить мое приложение - приложение Swing, я хочу использовать сложный компонент SWT UI (перетаскивание, всплывающие окна и диалоги) - кому-нибудь это удалось?

ответ

3

Я использовал как Swing, так и SWT, хотя и никогда в одном приложении/проекте раньше.

До тех пор, пока вы не пытаетесь объединить компоненты в одном окне, я не вижу причин, по которым вы не можете иметь полностью отдельные окна/диалоги, каждый из которых использует определенный набор виджетов. Тем не менее, попытка смешивания SWT и Swing в одном окне, вероятно, никогда не будет работать или, по крайней мере, вызовет множество проблем, поскольку оба набора виджетов полагаются на совершенно разные средства рисования/компоновки. Компоненты Swing обрабатываются непосредственно внутри Java и являются полностью отделен от базовой ОС, в то время как SWT явно использует базовую ОС для выполнения всех (или большинства) визуализации графического интерфейса. Попытка смешать эти два, вероятно, вызовет всевозможные проблемы.

Конечно, я выброшу обычный ответ «это тоже не рекомендуемая практика»: если у вас нет конкретной конкретной цели, смешение разных наборов виджетов в одном приложении не является хорошим идея. Swing и SWT имеют две совершенно разные философии и основные архитектуры. На самом деле SWT родилась из-за того, что IBM/OTI не понравился подход, который был взят с Swing, и поэтому решил реализовать свои собственные виджеты. С такими контрастными подходами к виджетам GUI вам лучше просто выбрать один и придерживаться его, а не смешивать их вместе.

2

Смешивание Swing и SWT - не лучшая вещь, но если у вас нет вариантов, это не ужасно трудное зверь, чтобы убить. Просто попробуйте обеспечить соблюдение некоторых правил/стандартов во всем коде. например. сохраните все диалоги в Swing (не используйте сочетание обоих, если нет причин), используйте соглашения об именах, чтобы различать компоненты Swing и SWT и т. д. Убедитесь, что вы хорошо знаете, как Swing и SWT компоненты обрабатываются ОС/JVM, прежде чем вы начнете решать любые сложные проблемы пользовательского интерфейса.

Единственное, что нужно учитывать - это перетаскивание между компонентами Swing и SWT. Это немного сложно, но особенно, если вы начинаете бросать пользовательские типы данных.

Смежные вопросы