2010-05-12 3 views
1

는 JRE 5.0.0 사용, 시뮬레이터 장치가 화면 내가 사용 FlowFieldManager (Manager.VERTICAL_SCROLL)와 데이터를 표시하는 데에 필드를 추가하고에 8520.블랙 베리 필드 클래스 확장

입니다 페인트하지 않습니다. 내가

this.flowManager = new FlowFieldManager(Manager.VERTICAL_SCROLL); 
Field field = new Field() 
{ 
    protected void paint(Graphics graphics) 
    { 
     graphics.drawTest("Test", 0, 0); 
    } 
    protected void layout(int width, int height) 
    { 
     this.setExtend(300, 300); // just testing 
    } 
} 

this.flowManager.add(field); 

을 수행 할 때

은 화면이 제대로 렌더링하고 '테스트'화면에 나타납니다.

다른 속성으로 이것을 CustomField라는 클래스로 추상화하고 흐름 관리자에 추가하면 렌더링이 수행되지 않습니다. 디버깅은 장치가 레이아웃 기능으로 객체에 입력되지만 페인트 기능에는 입력되지 않음을 보여줍니다.

필드를 확장해도 페인트 기능이 호출되지 않는 이유를 알 수 없습니다. 4.5 API는 레이아웃과 페인트가 실제로 확장해야하는 유일한 기능이라고 말합니다. (getPreferredWidth 및 getPreferredHeight는 화면 크기 등을 계산하는 데 사용됩니다.)

미리 감사드립니다.

답변

2

페인트 할 때 필드가 클리핑 영역 밖에 있으면 페인트 할 것을 지시받지 않습니다. 이것이 내가 잘못 본 유일한 것입니다.

그래서이 필드를 어딘가에 화면에서 스크롤하지 않도록하십시오.

+0

감사합니다. 너무 높은. – jlindenbaum