我正在制作一个BlackBerry OS 6+应用程序,我需要绘制一个特定颜色的实心方块(在运行时给出)但它应该可以添加到 {{1} }。所以我认为使用VerticalFieldManager
对象的自定义绘图不是一种选择。
我已尝试将Graphics
的背景颜色设置为我想要的颜色,并将LabelField
添加到LabelField
。为了获得方形外观,我尝试覆盖VerticalFieldManager
的{{1}}和getPreferredWidth()
以返回更高的值(例如:150)。但是虽然正确显示了宽度,但无论我返回什么值,高度都保持不变。
那么有什么办法可以实现这个目标吗?总之,我想要的是:
getPreferredHeight
。提前致谢!
答案 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);