2012-10-12 4 views
0

내 테이블의 행 중 하나가 ComboBox입니다. 'Yes', 'No', 'Both'중 하나를 선택할 수 있습니다. 둘 다 선택하면 테이블을 작성하고 테이블을 새로 고치는 데이터 배열을 일부 수정해야합니다. 이전 게시물에서 Both에 대한 else 문에서 내 논리를 작성하는 것이 좋습니다.ComboBox를 사용하여 행의 인덱스 값을 가져 오는 중

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(); <<<<---- 
     } 

를 호출하는 줄에 널 (null) 포인터 오류가 무엇입니까 당신은 OptionEditingSupport 클래스의 인덱스를받을 수 있습니까?

답변

1

그래서 "both"가 선택된 AplotDatasetData의 색인을 찾으려고합니다.

ModelProvider (APlotDataModel)에는 데이터가 포함 된 List이 포함되어 있습니까?

ListindexOf(Object) 메서드를 구현합니다. 따라서이 방법을 사용하여 현재 객체의 색인을 가져올 수 있습니다.

public int getIndexOf(APlotDatasetData object) 
{ 
    return LIST_HOLDING_YOUR_DATA.indexOf(object); 
} 
:
AplotDatasetData selected = ... 
int index = AplotDataModel.getInstance().getIndexOf(selected); 

및 모델 내에서

관련 문제