를 채우는 방법 TableViewer 에서 수직 패션
-
20-12-2019 - |
문제
나 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
방법 중 하나를 통과 이러한 행 개체입니다.당신이 필요합니다 얻을 수 있을 열 데이터에서 당신의 행 개체입니다.