2013-04-28 3 views
1

런타임시 블랙 베리 BitmapField을 비 집중식으로 만드는 방법은 무엇입니까? 특정 이벤트를 기반으로 희미하게 만들고 싶습니다.런타임에서 블랙 비트 BitmapField를 포커스가 맞지 않게 만드는 방법

public class FocusableBitmapField extends BitmapField { 
    //Default value depending on whether you want it that way. 
    private boolean focusable = true; 

    public boolean isFocusable() { 
     return focusable; 
    } 

    public boolean setFocusable(boolean focusable) { 
     this.focusable = focusable; 
    } 
} 
+0

[내 비슷한 해결책이 여기에 있습니다] (http://stackoverflow.com/a/11488638/119114)를 볼 수 있습니다. ** 표시되는 코드는 비활성화 된 필드를 흐리게 표시합니다 **. 내 예제는 [BitmapButtonField 클래스] (https://github.com/blackberry/Samples-for-Java/blob/master/Advanced%20UI/src/com/samples/toolkit/ui/component/BitmapButtonField.java)입니다. ,하지만 정상적인 BitmapField에도 똑같이 작동해야합니다. – Nate

답변

1

이 같은 isFocusable() 메소드를 오버라이드 (override) 할 수 BitmapField를 확장 또는 Field.FOCUSABLE을 생성자에 전달하지만 일단 인스턴스를 생성하면 포커스 가능 상태를 변경할 수 없습니다. 가능한 경우에도 필드가 흐리게 표시되거나 비활성화 된 것처럼 보이지는 않지만 간단히 포커스는 포커스가 설정된 다음 필드로 넘어갑니다. 예를 들어 초점을 맞출 수없는 라벨 필드가 있습니다.

업데이트 : EditFields, Checkbox, RadioButtons 등의 기본 제공 필드에서 작동합니다. 귀하의 경우 BitmapField는 "편집 가능"이 아니기 때문에 작동하지 않습니다. 읽기 전용 필드입니다. @adwiv 답변보기와 같은 트릭을 만들 수 있지만 "비활성화"또는 회색 오버레이를 직접 구현해야합니다.

1

이 시간의 대부분이 작품 :

field.setEditable(false); 

또한 스타일 플래그 Field.NON_FOCUSABLE을 전달하여 비 포커스 필드를 만들 수 있습니다

+0

+1. [이 비슷한 질문] (http://stackoverflow.com/a/11488638/119114)에서는 오버라이드 된'paint()'메소드에서 해당 필드가 편집 가능/포커스 가능 할지를 간단하게 검사 할 수있는 방법을 보여주고 필드의 알파에서 * 희미해진다. – Nate

관련 문제