Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eclipse rcp Eclipse4:如果使用EPartService检索零件,则无法访问零件的STW小部件_Eclipse Rcp - Fatal编程技术网

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