먼저 트리를로드하는 것과 같은 요구 사항이 있습니다. 트리는 4 가지 레벨을 포함합니다.SWT 트리 노드의 특정 문자열 강조 표시
사용자가 "filterText"를 입력 할 수있는 텍스트 필드가 있으며 검색 버튼을 누를 수 있습니다.
트리에서 필터 텍스트와 일치하는 항목이 4 개이면 특정 문자열 만 노란색으로 강조 표시하고 전체 노드는 강조하지 말고 해당 트리를 확장해야합니다.
일치하지 않는 트리 노드가 확장되어서는 안됩니다.
먼저 트리를로드하는 것과 같은 요구 사항이 있습니다. 트리는 4 가지 레벨을 포함합니다.SWT 트리 노드의 특정 문자열 강조 표시
사용자가 "filterText"를 입력 할 수있는 텍스트 필드가 있으며 검색 버튼을 누를 수 있습니다.
트리에서 필터 텍스트와 일치하는 항목이 4 개이면 특정 문자열 만 노란색으로 강조 표시하고 전체 노드는 강조하지 말고 해당 트리를 확장해야합니다.
일치하지 않는 트리 노드가 확장되어서는 안됩니다.
TreeViewer
을 사용하고 있다고 가정합니다.
StyledCellLabelProvider
을 사용하면 레이블 문자열 부분에 다른 스타일을 설정할 수 있습니다. DelegatingStyledCellLabelProvider
클래스는이 클래스에서 파생되므로 좀 더 쉽게 사용할 수 있습니다. 사용 레이블 제공자를 설정합니다 myLabelProvider
이 DelegatingStyledCellLabelProvider.IStyledLabelProvider
를 구현하는 클래스가
viewer.setLabelProvider(new DelegatingStyledCellLabelProvider(myLabelProvider));
.
public StyledString getStyledText(Object element)
당신이 텍스트에 다른 스타일을 적용 할 수있는 StyledString
를 사용하여 공급자 평소 플러스로 getImage
방법이있다. 같은 뭔가 :
StyledString text = new StyledString();
text.append("unstyled text");
text.append("styled text with decorations style", StyledString.DECORATIONS_STYLER);
뿐만 아니라 미리 정의 된 StyledString.Styler
값을 사용자가 직접 정의 할 수 있습니다. DefaultStyler
클래스를 사용하면 JFace 색상 레지스트리에 정의 된 색상을 사용할 수 있습니다.
것 노란색의 배경을 설정하는 스타일러의 간단한 버전 :
class HighlightStyler extends Styler
{
@Override
public void applyStyles(final TextStyle textStyle)
{
textStyle.background = Display.getDefault().getSystemColor(SWT.COLOR_YELLOW);
}
}
안녕 그렉은, 자사의 그래픽 Conext (GC) 우리가 그것을 acheive 수의 도움으로 내 문제 ... 를 해결하지? –
이것으로 확실히 가능하지만 자신의 Styler를 만들어 코드를 보여줘야합니다. GC를 사용하려면'OwnerDrawLabelProvider'를 사용해야합니다. –
실수로 StyledText를 사용하는 것으로 나타났습니다 - StyledString이어야합니다. –