2013-07-06 45 views
0

我有SWT应用程序(壳牌),有几个复合: 一个菜单栏是在一个复合材料内,我也有第二个复合材料与各种元素。寻找复合材料的最佳方法是什么?

从我的菜单栏的动作侦听器中,我想访问第二个组合元素。

目前,我通过这样做找到了我的复合材料。有更好/更简单的方法吗?

Control[] appComposites; 
appComposites = parent.getChildren(); 
Composite remoteFile; 
for(int i=0; i<appComposites.length;i++){ 
    if(appComposites[i].toString().compareTo("RemoteFile {}") == 0){ 
     remoteFile = (Composite) appComposites[i]; 
    } 
} 
//Now I must make another loop inside remoteFile to find the element that I need ... 
+0

你解决问题了吗? – Baz

回答

0

您可以使用该方法Widget#setData(Object)将识别信息添加到Widget秒。

下面是一个例子:

public static void main(String[] args) 
{ 
    Display display = new Display(); 
    final Shell shell = new Shell(display); 
    shell.setText("StackOverflow"); 
    shell.setLayout(new GridLayout(2, true)); 

    Listener listener = new Listener() 
    { 
     @Override 
     public void handleEvent(Event arg0) 
     { 
      Widget widget = arg0.widget; 

      System.out.println(widget.getData().equals("Button 1"); 
     } 
    }; 

    for(int i = 0; i < 10; i++) 
    { 
     Button button = new Button(shell, SWT.PUSH); 
     button.setText("Button " + i); 
     button.setData("Button " + i); 

     button.addListener(SWT.Selection, listener); 
    } 

    shell.pack(); 
    shell.open(); 
    while (!shell.isDisposed()) 
    { 
     if (!display.readAndDispatch()) 
      display.sleep(); 
    } 
    display.dispose(); 
} 

。如果找出Widget你正在看的是你正在寻找的人,你可以使用:

widget.getData().equals("YOUR IDENTIFIER"); 
相关问题