【问题标题】:I want to set Value of label from Class A - View to Class B - View in Eclipse RCP我想将标签的值从 A 类 - 视图设置为 B 类 - 在 Eclipse RCP 中查看
【发布时间】:2017-05-22 17:30:42
【问题描述】:
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" 来自不同的视图,并作为方法传递。我该怎么做?

【问题讨论】:

  • 这其中的哪一部分导致了问题?视图中的代码,或者如何找到视图,或者...?

标签: java eclipse view eclipse-plugin rcp


【解决方案1】:

您需要调用对象的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 对象的文本,而不是它的值。

【讨论】:

    【解决方案2】:

    要从处理程序或其他类中设置值,您需要找到现有的视图对象(使用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");
    

    【讨论】:

      猜你喜欢
      • 2014-03-16
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多