如何在BlackBerry中绘制一个坚固的方块?

时间:2012-03-29 11:10:43

标签: java blackberry java-me

我正在制作一个BlackBerry OS 6+应用程序,我需要绘制一个特定颜色的实心方块(在运行时给出)但它应该可以添加到 {{1} }。所以我认为使用VerticalFieldManager对象的自定义绘图不是一种选择。

我已尝试将Graphics的背景颜色设置为我想要的颜色,并将LabelField添加到LabelField。为了获得方形外观,我尝试覆盖VerticalFieldManager的{​​{1}}和getPreferredWidth()以返回更高的值(例如:150)。但是虽然正确显示了宽度,但无论我返回什么值,高度都保持不变。

那么有什么办法可以实现这个目标吗?总之,我想要的是:

  • 一个实心方形的颜色块(颜色在运行时决定)。
  • 哪个应添加到getPreferredHeight

提前致谢!

2 个答案:

答案 0 :(得分:3)

尝试此代码,在构造函数中传入颜色。

import net.rim.device.api.ui.Color;
import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.Font;
import net.rim.device.api.ui.Graphics;

public class CustomField extends Field
{

private int backgroundColour; 
private int fieldWidth;
private int fieldHeight; 
private int padding = 8;

public CustomField(int color)
{
    super(Field.FOCUSABLE); 
    fieldHeight = 100;
    fieldWidth = 100;
    this.setPadding(2, 2, 2, 2);
    this.backgroundColour=color;
} 

public int getPreferredWidth()
{
    return fieldWidth;
}

public int getPreferredHeight()
{
    return fieldHeight;
}

protected void layout(int arg0, int arg1)
{
    setExtent(getPreferredWidth(), getPreferredHeight());
}

protected void drawFocus(Graphics graphics, boolean on)
{

} 

protected void paint(Graphics graphics)
{
    graphics.setColor(backgroundColour);
    graphics.fillRect(0, 0, fieldWidth, fieldHeight); 
}
}

答案 1 :(得分:0)

VerticalFieldManager vfm = new VerticalFieldManager();

    Field f = new Field() {

        protected void paint(Graphics graphics) {
            graphics.setBackgroundColor(Color.RED);
            graphics.clear();
            graphics.drawRect(10, 10, 100, 100);
            graphics.fillRect(10, 10, 100, 100);
        }

        protected void layout(int width, int height) {
            // TODO Auto-generated method stub

            setExtent(200, 200);
        }
    };
    vfm.add(f);

    add(vfm);