所以我宣布了自己的一部分:
import javax.annotation.PostConstruct;
import javax.inject.Inject;
import org.eclipse.e4.ui.di.Focus;
import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
public class MyPart {
private Browser browser;
@Inject
public MyPart() {
}
@PostConstruct
public void createComposite(Composite parent) {
parent.setLayout(new FillLayout());
Browser browser = new Browser(parent, SWT.NONE);
}
@Focus
public void onFocus() {
if (browser!= null){
browser.forceFocus();
}
}
public Browser getBrowser() {
return browser;
}
}
从我的应用程序的另一个角度来看,我通过
引用了这个PART
@Inject private EPartService partService;
MPart clientPart = partService.findPart("rcp.parts.clientpart");
MyPart view = (MyPart)clientPart.getObject();
我仔细检查了检索到的引用,并且应用程序中显示的部分具有相同的对象ID,因此它们是相同的。但是,如果我调用getBrowser(),我总是得到一个null对象。 我用String编写了相同的场景,这很有效。
问题是它是SWT小部件吗?
答案 0 :(得分:3)
您的createComposite
正在分配一个本地变量:
Browser browser = new Browser(parent, SWT.NONE);
不班级成员 - 应该是
browser = new Browser(parent, SWT.NONE);