문제

TreeViewer 일부를 포함 노드 노드는 각각 어떤 특성을 가진 해당 값이 있습니다.나는 또한 TableViewer 을 보여주의 특성과 해당 값을 선택한 노드의에서 TreeViewer.테이블에 있는 2 열의 하나 보여주는 속성 이름(왼쪽)및 다른 하나의 가치를 보여주는 특성(오른쪽).

나는 특성을 가지고 있고,값에 HashMap(속성,value)

하지만 이후는 각 노드가 나타내는 개체에 대한 호출 AttributeLabelProvider (를 구현하는 ITableLabelProvider)방법 getColumnText(Object element, int columnIndex) 단 한 번 일어난다.하지만 나를 만들 필요가 10 행하여 모든 10 속성의 특성에 열고 그들의 값이 오른쪽에서 열입니다.

tableViewer.setInput(selectedNode);
// The following is where I have implemented IStructuredContentProvider to use as my content provider
@Override
public Object[] getElements(Object inputElement) {
    TreeNode TN = (TreeNode) inputElement;
    return TN.getAttributes().values().toArray(); // ***
}

***여기에 나는 단지 하나를 통과 keySet()values() 기 때문에 내 속성에 있다 HashMap.

사전에 감사합니다:)

도움이 되었습니까?

해결책 2

내가 찾은 하나의 솔루션으로,그러나 나는 확실하지 않는 경우 이은 안전합니다.이것은 모두 반환 값과 열쇠의 배열에서 객체[]:

@Override
public Object[] getElements(Object inputElement) {
    TreeNode TN = (TreeNode) inputElement;
    return TN.getAttributes().entrySet().toArray();
}

그때 나는 사용 다음에서 ITableLabelProvider.getColumnText()열에 한 두:

col.setLabelProvider(new ColumnLabelProvider() {   // Column 1 (contains the keys)
        @Override
        public String getText(Object element) {
            String str = element.toString();
            String[] parts = str.split("=");
            return parts[0];
        }
    });

col.setLabelProvider(new ColumnLabelProvider() {  // Column 2 (Contains the values)
        @Override
        public String getText(Object element) {
            String str = element.toString();
            String[] parts = str.split("=");
            return parts[1];
        }
    });

다른 팁

귀하의 IStructuredContentProvider.getElements 방법을 배열을 반환해야 합 개체의 각각을 나타내는 행 테이블에 있습니다.그래서 당신의 경우에 당신의 배열을 반환 10 행 개체입니다.지 않는 경우 현재와 같은 객체를 만듭니다.

ITableLabelProvider.getColumnText 방법 중 하나를 통과 이러한 행 개체입니다.당신이 필요합니다 얻을 수 있을 열 데이터에서 당신의 행 개체입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top