我想将标签的值从 Class A - View 设置为 Class B - 在 Eclipse RCP 中查看

I want to set Value of label from Class A - View to Class B - View in Eclipse RCP

public class ImageViewer extends ViewPart {

    String text;

    public ImageViewer() {}

    public void setA(String val) {
        String text=val;    
    }

    @Override
    public void createPartControl(Composite parent) {
        Label labelMsg1 = new Label(parent, SWT.NONE);  
        labelMsg1.setText("Hello"); 
    }

    public void setFocus() {}

}

我希望删除 "Hello" 并在我的标签上打印一个值 "val""val" 来自不同的视图并作为方法传递。我该怎么做?

您需要调用对象的setText,但它只在本地已知。你需要让它成为会员,然后你才能做到:

public class ImageViewer extends ViewPart {

    String text;
    protected Label labelMsg1;

    public ImageViewer() {}

    public void setA(String val) {
        String text=val; 
        labelMsg1.setText(val);   
    }

    @Override
    public void createPartControl(Composite parent) {
        if (labelMsg1 == null) {
            labelMsg1 = new Label(parent, SWT.NONE);  
            labelMsg1.setText("Hello");
        } 
    }

    public void setFocus() {}

}

另外,您想设置 Label 对象的文本,而不是它的值。

要从处理程序或其他 class 设置值,您需要找到现有的视图对象(使用 new ImageView 创建新的视图对象将不起作用)。

使用类似以下内容查找视图:

IWorkbenchPage page = PlatformUI..getWorkbench().getActiveWorkbenchWindow().getActivePage();

IViewPart view = page.findView("id of the view");

if (view != null) {
  ImageView imageView = (ImageView)view;

  imageView.setA("new text");
}

如果视图尚未显示,您可以使用以下方式显示它:

IViewPart view = page.showView("id of the view");

ImageView imageView = (ImageView)view;

imageView.setA("new text");