我正在使用ObjectChoiceField
示例。它显示在右侧末端下降,但我需要在左侧显示一些余量。
我们如何才能实现这一目标?
String choices[] = {"Monday","Tuesday","Wednesday","Thursday","Friday", "Saturday", "Sunday"};
int iSetTo = 0;
VerticalFieldManager vfm=new VerticalFieldManager(){
protected void paint(Graphics graphics) {
graphics.setBackgroundColor(Color.BLACK);
graphics.clear();
super.paint(graphics);
}
};
vfm.add(new ObjectChoiceField("Day of the week",choices,iSetTo){
protected void paint(Graphics graphics) {
graphics.setColor(Color.WHITE);
super.paint(graphics);
}
});
我正在使用这个例子:
![在此处输入图片说明] [1]
答案 0 :(得分:2)
您可以通过设置边距对多个字段执行此操作。自{BBO 6.0}正式开始以来Field#setMargin()已经可用,但是在5.0(至少)中也没有记录并可用。因此,在这一点上,我认为在5.0+应用程序中使用它是完全可以接受的。
例如:
public ChoiceMarginScreen() {
super(MainScreen.VERTICAL_SCROLL | MainScreen.VERTICAL_SCROLLBAR);
String choices[] = {"Monday","Tuesday","Wednesday","Thursday","Friday", "Saturday", "Sunday"};
int iSetTo = 0;
VerticalFieldManager vfm = new VerticalFieldManager();
vfm.setBackground(BackgroundFactory.createSolidBackground(Color.BLACK));
ObjectChoiceField days = new ObjectChoiceField("Day of the week", choices, iSetTo) {
protected void paint(Graphics graphics) {
graphics.setColor(Color.WHITE);
super.paint(graphics);
}
};
// set margin XYEdges(top, right, bottom, left):
days.setMargin(new XYEdges(0, 150, 0, 0));
vfm.add(days);
add(vfm);
}
请注意,您也不需要覆盖VerticalFieldManager#paint()
方法来设置纯色背景。您可以使用setBackground()
。但是,要在对象选择字段上设置白色字体颜色,覆盖paint()
是一个很好的解决方案。
另外:我刚离开你的屏幕截图,并且假设你想要将选择字段移到左边,但是右边没有其他字段。如果您希望左侧的选项字段为其右侧的其他字段腾出空间,那么您可能希望将这两个字段放在HorizontalFieldManager
中,代表一行,然后将HorizontalFieldManager
添加到你的VerticalFieldManager
。但是,这不是你所展示的,所以我在上面提供了我的答案。