如何在blackberry + java中向左移动

时间:2013-12-11 06:59:04

标签: blackberry

我正在使用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]

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。但是,这不是你所展示的,所以我在上面提供了我的答案。