CSDN=>FAQ=>FAQ 展示
  • 问题内容:插件开发中如何在两个视图之间实现事件监听
  • 原讨论链接:http://community.csdn.net/expert/topicview1.asp?id=5416153
  • 所属论坛:Eclipse     审核组:JAVA
  • 提问者:honglonglong258     解决者:fulong258
  • 感谢:
  • 关键字:Java 视图 eclipse 插件开发 事件监听 扩展点
  • 答案:

    两个视图中的组件之间的互动

    比如单击视图1列表中的某项时,视图2的文本框也作相应显示。
    ---------------------------------------------------------------

    修改View1.java、View2.java
      Eclipse通过plugin.xml来加载插件和插件中的扩展点(如视图),所以可以由视图的id标识来取得视图对象,具体语句如下:
    IWorkbenchPage wbp = getViewSite().getPage();
    IViewPart view2 = wbp.findView("cn.com.chengang.View2");

    得到了视图2的对象后,其他一切就都好办了,先给出修改后View1如下:
    public class View1 extends ViewPart {
        public void createPartControl(Composite parent) {
            Composite topComp = new Composite(parent, SWT.NONE);
            topComp.setLayout(new FillLayout());
            final List list = new List(topComp, SWT.BORDER);
            list.add("中国");
            list.add("美国");
            list.add("法国");
            //列表选择事件监听
            list.addSelectionListener(new SelectionListener() {
                public void widgetSelected(SelectionEvent e) {
                    //由IWorkbenchPage取出view2
                    IWorkbenchPage wbp = getViewSite().getPage();
                    IViewPart view2 = wbp.findView("cn.com.chengang.View2");
                    //将当前选择的列表项显示在文本框中
                    Text text = ((View2) view2).getText();
                    text.setText(list.getSelection()[0]);
                }
                public void widgetDefaultSelected(SelectionEvent e) {}
            });
        }
        public void setFocus() {}
    }

    然后将View2的文本框对象改成类的实例变量,并编写它相应的set/get方法

    public class View2 extends ViewPart {
        private Text text;
        public void createPartControl(Composite parent) {
            Composite topComp = new Composite(parent, SWT.NONE);
            topComp.setLayout(new FillLayout());
            text = new Text(topComp, SWT.BORDER);
            text.setText("我是text框");
        }
        public void setFocus() {}
    //文本框text相应的set/get方法
        public Text getText() {return text;}
        public void setText(Text text) {this.text = text;}
    }

  • 评价: 有价值 给朵鲜花(1) 无价值 扔个鸡蛋(2)
相关FAQ
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo