swt.widgets.List返回空

时间:2014-05-14 15:48:48

标签: java eclipse-plugin swt

我开发了一个带有很少向导页面的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:,列表为空 :(

我无法理解原因。有人可以帮忙。

1 个答案:

答案 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]除非它被丢弃或被错误的线程调用。