2010-02-14 2 views
3

Вторая половина дня,Проблемы с мостом SWT/AWT?

Я работаю над плагином 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); 

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

Благодаря

ответ

5

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

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

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

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

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

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