2010-02-14 4 views
3

Après-midi,Problèmes avec pontage SWT/AWT?

Je travaille sur un plugin Eclipse RCP. Je veux intégrer un composant Swing dans celui-ci. En ce moment je suis en utilisant un SWT < -> pont AWT comme ceci:

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); 

Existe-t-il des problèmes signficant avec cette approche, ou est également là une meilleure approche que je devrais considérer? Comment cela affectera le threading/concurrent dans l'application.

Merci

Répondre

5

Il y a quelques problèmes avec definetly pont SWT_AWT:

  1. Le ofcourse le plus important est la question de filetage. Le problème ici est que lorsque vous utilisez à la fois SWT et AWT, vous utilisez essentiellement deux threads GUI. Une synchronisation correcte entre eux est absolument nécessaire ou vous finirez souvent avec blocages. Dans la plupart des cas, vous pouvez l'éviter en utilisant EventQueue # invokeLater ou Display # asyncExec.

  2. Le deuxième problème majeur concerne les problèmes de modalité. SWT a sa propre pile de modalité et AWT a la sienne. Vous devrez peut-être travailler autour de ceux-ci aussi. Il existe des solutions connues pour cela.

  3. Vous risquez de voir apparaître des incohérences ici et là et devrez peut-être les corriger au cas par cas.

  4. Il existe d'autres petits problèmes, comme parfois le défilement de la molette de la souris ne fonctionne pas sur certaines plates-formes.

Veuillez vous assurer que vous avez lu et compris le FAQ avant de faire quelque chose en utilisant SWT_AWT.