2012-10-12 28 views
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類寫了一個方法來獲得他們只是改變到所述列的行索引。我需要索引值來從數組中獲取數據。

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

然後,我將該行的索引傳遞給我的dataModel類中的一個方法。它在具有數據數組的dataModel類中。

我猜我在這裏重新發明輪子。必須有更好的方法來完成這個過程。現在我在的地方所有的代碼,我得到一個空指針錯誤在調用AplotBaseDialog

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

行了,你能弄到的OptionEditingSupport類的指數?

回答

1

所以你想找到AplotDatasetData的索引,其中「both」被選中。

您的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); 
}