PhoneScreenVerticalManager对来电的怪异

时间:2012-01-11 22:30:21

标签: java blackberry

我正在制作一个应用程序,它有一个听众来电,然后添加字段直到手机屏幕.. 但是,我似乎无法真正控制labelfields或我使用的PhoneScreenVerticalManager的宽度。 如果我尝试在PhoneScreenVerticalManager上设置边框或背景,则根本不会发生任何事情。 看起来labelfield构造函数中的USE_ALL_WIDTH似乎没有任何改变。 让labelfields左对齐我也无法工作(在labelfield构造函数中尝试了DrawStyle.Left)。

这是我的代码:

public Incoming(int callId) {     
     this.callId = callId;
     PhoneCall call = Phone.getCall(callId);  
  String number = call.getPhoneNumber();
  Vector contact = ContactUtil.getContactByPhone(number); 
        screenModel = new ScreenModel(callId);
        phoneScreenPortrait = screenModel.getPhoneScreen(PhoneScreen.PORTRAIT, PhoneScreen.INCOMING);
        final XYRect rect = screenModel.getDimensions(PhoneScreen.PORTRAIT, PhoneScreen.INCOMING);
 PhoneScreenVerticalManager manager = new PhoneScreenVerticalManager()
         {

          public void paint(Graphics g) {
                 g.setColor(Color.BLACK);
                 g.setBackgroundColor(Color.WHITE);
                 g.clear();
                 super.paint(g);
             }

          protected void sublayout(int width, int height)
             {
                 super.sublayout(rect.width, height);
                 super.setExtent(rect.width, height);
             }

         };        

         manager.setBackground(BackgroundFactory.createSolidBackground(Color.RED));
         manager.setBorder(BorderFactory.createSimpleBorder(new XYEdges(BORDER_PADDING, BORDER_PADDING, BORDER_PADDING, BORDER_PADDING), Border.STYLE_SOLID));

         String s = res.getString(FOUND_IN_CONTACTS);
         LabelField header = new LabelField(s, LabelField.USE_ALL_WIDTH)
         {
          protected void layout(int width, int height)
             {
                 super.layout(rect.width, height);
                 setExtent(rect.width, height);
             }

          public void paint(Graphics g) {
                 g.setColor(Color.BLACK);
                 g.setBackgroundColor(Color.WHITE);
                 g.clear();
                 super.paint(g);
             }
         };
         header.setBackground(BackgroundFactory.createSolidBackground(Color.WHITE));
         manager.add(header);
         LabelField label = new LabelField(contact.firstElement().toString(), LabelField.USE_ALL_WIDTH)
         {
          protected void layout(int width, int height)
             {
                 super.layout(rect.width, height);
                 setExtent(rect.width, height);
             }

          public void paint(Graphics g) {
                 g.setColor(Color.BLACK);
                 g.setBackgroundColor(Color.WHITE);
                 g.clear();
                 super.paint(g);
             }

         };
         label.setBackground(BackgroundFactory.createSolidBackground(Color.WHITE));
         manager.add(label);
         phoneScreenPortrait.add(manager);
        screenModel.sendAllDataToScreen();
}

非常感谢任何想法!¨

由于

1 个答案:

答案 0 :(得分:1)

尽管phonecreen管理器是从现场管理器派生的,但它并不支持所有的现场管理器属性。

所以解决方案是设置普通的现场管理器,然后将它们添加到手机屏幕管理器