Blackberry UI框架

在黑莓原生的UI框架里,所有的UI组件都是Field,这里的Filed代表一个占据一个矩形空间的物件。自定义的UI组件必须是Field的子类或子类的子类。

黑莓的UI有个特性就是默认其大小是不固定的,它不提供类似setSize(),resize()之类的函数,而是需要在开发者客制化一个Filed时在Layout中去指定其大小。而如果需要的是一个大小固定,内容可伸缩的Field,则必须在该Filed之外包裹上一层Manager,也就是说这时候,除了客制化Field之外,开发者还需要客制化一个Manager

自定义大小的EditField示例:

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.FocusChangeListener;

import net.rim.device.api.ui.Graphics;

import net.rim.device.api.ui.Manager;

import net.rim.device.api.ui.component.EditField;

import net.rim.device.api.ui.container.VerticalFieldManager;

public class VerticalFieldInputManager extends VerticalFieldManager{

    private int managerWidth;

    private int managerHeight;

    private EditField editField;

    

    

    public VerticalFieldInputManager(int width, int height) {

        super(Manager.NO_VERTICAL_SCROLL );

        managerWidth = width;

        managerHeight = height;

        VerticalFieldManager vfm = new VerticalFieldManager(Manager.VERTICAL_SCROLL);

        editField = new EditField(Field.FOCUSABLE);

        editField.setFocusListener(new FocusChangeListener() {

            

            public void focusChanged(Field field, int eventType) {

                // XXX Auto-generated method stub

                invalidate();

            }

        });

        editField.setPadding(5,5,5,5);

        vfm.add(editField);

        add(vfm);

        

    }

    public void sublayout(int width, int height) {

        if(managerWidth == 0) {

            managerWidth = width;

        }

        if(managerHeight == 0) {

            managerHeight = height;

        }

        super.sublayout(managerWidth, managerHeight);

        setExtent(managerWidth,managerHeight);

    }

    

    protected void paintBackground(Graphics graphics) { 

        if(editField.isFocus()){

            graphics.setColor(0x0000FF);

        }else{

            graphics.setColor(0x000000);

        }

        

        graphics.drawRect(0, 0, managerWidth, managerHeight);

        graphics.setColor(0x000000);

        super.paint(graphics);

    }

    

    

    public String getText() {

        return editField.getText();

    }

    

    public void setText(String text) {

        editField.setText(text);

    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值