2012-10-18 5 views
3

전 Combobox를 스키닝하고 있습니다. 콤보 박스는 여러 하위 구성 요소로 구성되며 그 중 하나는 편집자입니다.
몇 가지 사용자 지정 함수가있는 사용자 지정 편집기를 작성했으며 combobox.setEditor(new CustomComboEditor())을 사용하여 사용자 지정 편집기를 설정했습니다. 다음과 같이 내 피부 XML 파일에서 편집기의 스킨 태그를 정의 : UI 신디사이저 구현 SynthComboBoxUI입니다 콤보Java synth - 콤보 용 사용자 정의 편집기를 바인드하는 방법은 무엇입니까?

style id="skinnedComboTextStyle"> 
<state value="MOUSE_OVER"> 
<imagePainter method="textFieldBackground" path="/images/image1.png" sourceInsets="2 2 2 20" /> 
</state> 
<state value="PRESSED"> 
<imagePainter method="textFieldBackground" path="/images/image2.png" sourceInsets="2 2 2 2" /> 
</state> 
</style> 
<bind style="skinnedComboTextStyle" type="name" key="ComboBox.textField" /> 

주와는 setName(ComboBox.textField)을 결합했다, 그래서 나는 위에서 키로 ComboBox.textField을 사용했다 꼬리표.

사용자 지정 편집기를 콤보 편집기로 설정하면 스킨이 적용되지 않습니다.
그러나 사용자 정의 편집기를 사용하지 않고 편집기의 기본 구현을 사용하면 내 스킨이 작동하지만 콤보 편집기에서 사용하려는 기능은 적용되지 않습니다.

콤보 용 사용자 지정 렌더러를 설정하려고 할 때 동일한 문제가 발생합니다.

+0

[SSCCE] (http://sscce.org/) 게시판에 어떤 식칼이라도 말하기 어렵습니다. – mKorbel

답변

0

SynthComboBoxEditor에서 createEditorComponent()를 재정 의하여 2 개의 레이블이있는 버튼을 만들고이 버튼을 ur 편집기로 반환 할 수 있습니다. 또한 setItem() 메서드를 재정 의하여 이러한 두 레이블의 텍스트를 개별적으로 설정합니다.

0

Nisha 같아요, 요구 사항에 따라 ComboBoxEditor 클래스에서 다른 메서드를 재정의해야합니다. 마찬가지로 getItem()에서 수정해야 할 수도 있습니다.

관련 문제