我有SWT应用程序(Shell),有一些复合: 菜单栏位于复合材料内部,我还有第二个复合材料,其中包含各种元素。
从我的菜单栏的动作监听器,我想访问第二个复合的元素。
目前,我通过这样做找到了我的复合材料。有更好/更简单的方法吗?
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 :(得分: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");