2011-01-07 3 views
-2

Blackberry에서 HorizontalFieldManager를 확장하는 클래스를 만들어 왼쪽에 레이블이 있고 오른쪽에 이미지가있는 동일한 행에 레이블과 이미지를 표시 할 수있게하려고합니다.
사용자가 하나의 필드 인 것처럼 HorizontalFieldManager와 상호 작용할 수 있기를 바랍니다. VeriticalFieldManager에 추가 할 때 각 HorizontalFieldManager를 포커스 할 수도 있습니다. 나는 또한 clcik 액션 이벤트를 원합니다.BlackBerry 맞춤형 HorizontalFieldManager

+1

당신이 블랙 베리의 ListField를 본 적이는? 귀하의 요구 사항을 충족시킬 수 있습니까 ?? – Prasham

+0

안녕하세요, MobileDev123. ListField, TableView 어제 그 자체를 사용하여 프로그램을 완료했지만 시뮬레이터 9800에서 잘 작동하지만 봇은 9700.I에서 모든 장치에서 작동하도록 프로그램을 원합니다. 그래서 사용자 정의 된 클래스를 작성하려고합니다. 다른 어떤 suggesstion이 있습니까? – user469999

답변

1

여기, 당신이 당신의 자신의 필드 클래스를 쓰기 시작하고자 할 것 같은데 당신이 시작하는 예입니다 :


import net.rim.device.api.system.Bitmap; 
import net.rim.device.api.system.Display; 
import net.rim.device.api.ui.Field; 
import net.rim.device.api.ui.Graphics; 

public class SimpleField extends Field { 

    private String label; 
    private Bitmap image; 
    private int fieldWidth; 
    private int fieldHeight; 
    private boolean hover = false; 
    private int focusColor = 0xcccccc; 

    public SimpleField(String label, Bitmap image) { 
     super(Field.FOCUSABLE); 
     this.label = label; 
     this.image = image; 
     fieldWidth = Display.getWidth(); 
     fieldHeight = image.getHeight(); 
    } 

    protected void onFocus(int direction) { 
     hover = true; 
     invalidate(); 
     super.onFocus(direction); 
    } 

    protected void onUnfocus() { 
     hover = false; 
     invalidate(); 
     super.onUnfocus(); 
    } 

    public int getPreferredWidth() { 
     return fieldWidth; 
    } 

    public int getPreferredHeight() { 
     return fieldHeight; 
    } 

    protected void layout(int width, int height) { 
     setExtent(fieldWidth, fieldHeight); 
    } 

    protected void paint(Graphics graphics) { 
     if(hover){ 
      graphics.setColor(focusColor); 
      graphics.fillRect(0, 0, fieldWidth, fieldHeight); 
     } 
     graphics.drawText(label, 0, (fieldHeight - graphics.getFont().getHeight())/2); 
     graphics.drawBitmap(graphics.getFont().getAdvance(label), 0, image.getWidth(), image.getHeight(), image, 0, 0); 
    } 
}