使用ComboBox获取行的索引值

时间:2012-10-12 19:23:07

标签: java swt jface tableviewer

我表中的一行是ComboBox。他们可以选择'是','否','两者' 如果他们选择Both,则必须对构建表的数据数组进行一些修改并刷新表。在之前的帖子中建议在Both语句中为Both构建我的逻辑。

protected void setValue(Object element, Object value) 
{
   if((element instanceof AplotDatasetData) && (value instanceof Integer)) {
        Integer choice = (Integer)value;
        String option = ((AplotDatasetData)element).getMarkupValue();;
        if(choice == 0) {
            option = "No";
        }    
        else if(choice == 1) {
            option = "Yes";
        }    
        else {
            option = "Both";
            abd.getIndexOfSelectedBoth(); <<<<<<<<<
        }    
       ((AplotDatasetData)element).setMarkupValue(option);
        getViewer().update(element, null);
    }
}

上面的代码在OptionEditingSupport类中。

该表位于AplotBaseDailog类中。

所以在OptionEditingSupport类中,我导入了AplotBaseDailog类并分配了它。

AplotBaseDialog abd;

然后我在AplotBaseDailog类中编写了一个方法来获取他们刚刚更改为Both的列的行索引。我需要索引值来从数组中获取数据。

 public void getIndexOfSelectedBoth() {
     int row = viewer.getTable().getSelectionIndex();
     AplotDataModel.getInstance().rebuildDataArray(row);
     updateTableViewer();
  }

然后我将行的索引传递给我的dataModel类中的方法。它位于dataModel类中,具有数据数组。

我猜我在这里重新发明轮子。必须有更好的方法来完成这个过程。现在我的所有代码到位,我在调用AplotBaseDialog的行中得到一个空指针错误

else {
        option = "Both";
        abd.getIndexOfSelectedBoth(); <<<<----
      }  

你能在OptionEditingSupport类中获得索引吗?

1 个答案:

答案 0 :(得分:1)

所以你想找到选择了“both”的AplotDatasetData的索引。

您的ModelProviderAPlotDataModel)包含List个数据,对吗?

每个List实现方法indexOf(Object)。因此,您可以使用此方法获取当前对象的索引。

AplotDatasetData selected = ...
int index = AplotDataModel.getInstance().getIndexOf(selected);

并在您的模型中:

public int getIndexOf(APlotDatasetData object)
{
    return LIST_HOLDING_YOUR_DATA.indexOf(object);
}