Eclipse rcp Eclipse4:如果使用EPartService检索零件,则无法访问零件的STW小部件
所以我宣布我自己的部分是这样的:Eclipse rcp Eclipse4:如果使用EPartService检索零件,则无法访问零件的STW小部件,eclipse-rcp,Eclipse Rcp,所以我宣布我自己的部分是这样的: 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.s
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;
}
}
从我的应用程序的另一个方面,我通过
@Inject private EPartService partService;
MPart clientPart = partService.findPart("rcp.parts.clientpart");
MyPart view = (MyPart)clientPart.getObject();
我仔细检查了检索到的引用和应用程序中显示的部分是否具有相同的对象ID,因此它们是相同的。但是如果我调用getBrowser(),我总是得到一个空对象。
我用一个字符串尝试了相同的场景,结果成功了
问题在于它是SWT小部件吗?您的
createComposite
正在分配给一个局部变量:
Browser Browser=新浏览器(父级,SWT.NONE);
不是类成员-应该是
browser=新浏览器(父级,SWT.NONE);
您的createComposite
正在分配给一个局部变量:
Browser Browser=新浏览器(父级,SWT.NONE);
不是类成员-应该是
browser=新浏览器(父级,SWT.NONE);
您的createComposite
正在分配给一个局部变量:
Browser Browser=新浏览器(父级,SWT.NONE);
不是类成员-应该是
browser=新浏览器(父级,SWT.NONE);
您的createComposite
正在分配给一个局部变量:
Browser Browser=新浏览器(父级,SWT.NONE);
不是类成员-应该是
browser=新浏览器(父级,SWT.NONE);