Доступ к объекту моей нити SWT из моей нити Swing
Итак, у меня есть SWT-поток, плагин Eclipse, который состоит из простого представления myView
с JPanel myJPanel
и JTree myJTree
встроен в него. С слушателем в потоке Swing, когда выбор изменяется на моем JTree, он обновляет JPanel в поток Swing.
Упрощенная версия кода моего myView
:
public class myView extends ViewPart {
public java.awt.Frame myFrame;
@Override
public void createPartControl(Composite parent) {
Composite myComposite = new Composite(parent, SWT.EMBEDDED);
myFrame = SWT_AWT.new_Frame(myComposite);
myFrame.add(myJPanel);
myFrame.repaint();
myFrame.revalidate();
//same kind of code for Jtree -> myJTreeFrame
}
Что я хочу сделать, это обновить myFrame
из потока Swing, когда слушатель myJTree
должен обновить myJPanel
Я думал об этом:
public void valueChanged(TreeSelectionEvent e) {
// some code that refresh myJPanel
Display.getDefault().asyncExec(
new Runnable() {
public void run() {
try {
myView view = (viewMap4j)PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView( "pluginProject.myView");
} catch (PartInitException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
view.myFrame.repaint();
view.myFrame.revalidate();
}
});
}
Но я получаю эту ошибку с библиотеками: исключение типа PartInitException не может быть выдано; тип исключения должен быть подклассом Throwable
Мой вопрос: как получить доступ к объекту из моей темы SWT (здесь myView
а) в качели темы? и какие-нибудь идеи, чтобы заставить это работать в этом конкретном примере?
1 ответ
Это сделало свое дело, это дало мне доступ к myView
где я мог найти myFrame
обновить его от слушателя JTree:
PlatformUI.getWorkbench().getDisplay().asyncExec(
new Runnable() {
public void run() {
try {
myView view =null;
view = (myView)PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView("pluginProject.myView");
view.reloadMyFrame();
} catch (CoreException e) {
e.printStackTrace();
}
}
});