我开发了一个带有很少向导页面的eclipse插件。在其中一个页面中,我正在使用org.eclipse.swt.widgets.List
我的代码如下:
public void createControl(Composite parent){
// few lines of code
List classesList = new List(someComposite, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
if(hugeList!=null) {
for (int j = 0; j < hugeList.size(); j++){
String a= hugeList.get(j);
classesList.add(a);
System.out.println("Inside loop: " + classesList);
}
System.out.println("Outside loop: " + classesList);
}
classesList.addListener(SWT.Selection, this);
// lines of code
}
此处,根据hugeList
的大小,Inside loop:
会一直打印数据。
但是,对于Outside loop:
,列表为空 :(
我无法理解原因。有人可以帮忙。
答案 0 :(得分:3)
我认为这里的答案取决于您尝试打印信息的方式。 System.out.println("Outside loop: " + classesList)
会隐式调用classesList.toString()
。 SWT小工具&#39; toString()方法(除非另外覆盖)形成一般模式:
ClassName {otherInformation}
但是,通过覆盖otherInformation
,可以通过子类来填充org.eclipse.swt.widgets.Widget.getNameText()
有用的数据。 List
不会这样做,因此otherInformation
只是空字符串,而toString()将始终 [1] 返回List {}
。
要从List
获取所需信息,请致电getItems()
。
[1]除非它被丢弃或被错误的线程调用。