Eclipse RCP 获取部件实例
Eclipse RCP get part instance
我正在尝试获取与 Java class 相关联的部分的引用。我可以使用
`@PostConstruct
public void createComposite(Composite parent) {
}`
然后 "parent" 变量就是我需要的。但我想有另一种方法。我正在尝试添加静态变量来保存它:
public class BibliotekaZmianyPart {
private static Label label;
private static Button button;
private static Composite part;
@PostConstruct
public void createComposite(Composite parent) {
part = parent;
}
public static void editBook() {
GridLayout layout = new GridLayout(2, false);
part.setLayout(layout);
label = new Label(part, SWT.NONE);
label.setText("A label");
button = new Button(part, SWT.PUSH);
button.setText("Press Me");
}}
然后 "part" 应该是我需要的变量 - 但它不起作用。
你不能有像引用实例变量那样的静态方法。
如果您想从另一部分引用 现有的 部分,您可以使用 EPartService
找到该部分:
@Inject
EPartService partService;
MPart mpart = partService.findPart("part id");
BibliotekaZmianyPart part = (BibliotekaZmianyPart)mpart.getObject();
part.editBook(); // Using non-static 'editBook'
如果零件尚未打开,您可以使用零件服务 showPart
方法:
MPart mpart = partService.showPart("part id", PartState.ACTIVATE);
BibliotekaZmianyPart part = (BibliotekaZmianyPart)mpart.getObject();
part.editBook();
所以你的 class 将是:
public class BibliotekaZmianyPart {
private Label label;
private Button button;
private Composite part;
@PostConstruct
public void createComposite(Composite parent) {
part = parent;
}
public void editBook() {
GridLayout layout = new GridLayout(2, false);
part.setLayout(layout);
label = new Label(part, SWT.NONE);
label.setText("A label");
button = new Button(part, SWT.PUSH);
button.setText("Press Me");
// You probably need to call layout on the part
part.layout();
}}
我正在尝试获取与 Java class 相关联的部分的引用。我可以使用
`@PostConstruct
public void createComposite(Composite parent) {
}`
然后 "parent" 变量就是我需要的。但我想有另一种方法。我正在尝试添加静态变量来保存它:
public class BibliotekaZmianyPart {
private static Label label;
private static Button button;
private static Composite part;
@PostConstruct
public void createComposite(Composite parent) {
part = parent;
}
public static void editBook() {
GridLayout layout = new GridLayout(2, false);
part.setLayout(layout);
label = new Label(part, SWT.NONE);
label.setText("A label");
button = new Button(part, SWT.PUSH);
button.setText("Press Me");
}}
然后 "part" 应该是我需要的变量 - 但它不起作用。
你不能有像引用实例变量那样的静态方法。
如果您想从另一部分引用 现有的 部分,您可以使用 EPartService
找到该部分:
@Inject
EPartService partService;
MPart mpart = partService.findPart("part id");
BibliotekaZmianyPart part = (BibliotekaZmianyPart)mpart.getObject();
part.editBook(); // Using non-static 'editBook'
如果零件尚未打开,您可以使用零件服务 showPart
方法:
MPart mpart = partService.showPart("part id", PartState.ACTIVATE);
BibliotekaZmianyPart part = (BibliotekaZmianyPart)mpart.getObject();
part.editBook();
所以你的 class 将是:
public class BibliotekaZmianyPart {
private Label label;
private Button button;
private Composite part;
@PostConstruct
public void createComposite(Composite parent) {
part = parent;
}
public void editBook() {
GridLayout layout = new GridLayout(2, false);
part.setLayout(layout);
label = new Label(part, SWT.NONE);
label.setText("A label");
button = new Button(part, SWT.PUSH);
button.setText("Press Me");
// You probably need to call layout on the part
part.layout();
}}