Проблемы с мостами SWT / AWT? - PullRequest
3 голосов
/ 14 февраля 2010

Вторая половина дня

Я работаю над плагином Eclipse RCP. Я хочу встроить в него компонент Swing. В настоящее время я использую мост SWT <-> AWT, например:

Applet applet = new myApplet();
Composite swtAwtComponent = new Composite(parent, SWT.EMBEDDED);
java.awt.Frame frame = SWT_AWT.new_Frame( swtAwtComponent );
applet.init();
frame.add(applet);

Есть ли какие-либо существенные проблемы с этим подходом, или же есть лучший подход, который я должен рассмотреть? Как это повлияет на многопоточность / параллелизм в приложении.

Спасибо

1 Ответ

5 голосов
/ 15 февраля 2010

Определенно есть некоторые проблемы с мостом SWT_AWT:

  1. Самым важным из них является проблема потоков. Проблема здесь в том, что когда вы используете SWT и AWT, вы, по сути, используете два потока GUI. Правильная синхронизация между ними абсолютно необходима, иначе вы часто будете сталкиваться с тупиками. В большинстве случаев этого можно избежать, используя EventQueue # invokeLater или Display # asyncExec.

  2. Вторая важная проблема - это проблемы Модальности. У SWT есть свой стек модальностей, а у AWT - свой. Возможно, вам придется обойти это тоже. Есть известные решения для этого.

  3. Вы можете увидеть несоответствия внешнего вида здесь и там, и, возможно, потребуется исправить их в каждом конкретном случае.

  4. Есть небольшие другие проблемы, например, иногда прокрутка колесика мыши не работает на некоторых платформах.

Пожалуйста, убедитесь, что вы прочитали и поняли FAQ , прежде чем делать что-то большое, используя SWT_AWT.

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