0

我表中的一行是 ComboBox。他们可以在“是”、“否”、“两者”之间进行选择。如果他们选择“两者”,则必须对正在构建表的数据数组进行一些修改并刷新表。在上一篇文章中建议在 Both 的 else 语句中构建我的逻辑。

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 类中获取索引吗?

4

1 回答 1

1

所以你想找到AplotDatasetData选择“两者”的索引。

您的ModelProvider( APlotDataModel) 包含List您的数据,对吗?

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

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

并在您的模型中:

public int getIndexOf(APlotDatasetData object)
{
    return LIST_HOLDING_YOUR_DATA.indexOf(object);
}
于 2012-10-15T07:46:08.303 回答