2011-10-25 36 views
0

我在连续显示多列时遇到问题。我需要多列和多行列表字段。现在我正试图使用​​标签字段,我的一个案例工作得很好,但在另一个案例中,我面临的问题请帮助我。我的代码是:多列列表字段

VerticalFieldManager TOrderVFM = new VerticalFieldManager() 

for (int i = 0; i <10; i++) 
{ 
    HorizontalFieldManager temphfm1 = new HorizontalFieldManager(){ 

     protected void sublayout(int width, int height) 
     { 

      int w = 480; 
      int h = 400; 

      super.sublayout(w, h); 
      super.setExtent(w, h); 
     } 
    }; 

    TOrderVFM.add(temphfm1); 

    temphfm1.add(createDayName1(MTradeOrderSoap.objects[i].getProperty("orderDate").toString())); 
    temphfm1.add(createDayName1(MTradeOrderSoap.objects[i].getProperty("id").toString())); 
    temphfm1.add(.createDayName1(MTradeOrderSoap.objects[i].getProperty("label").toString())); 
    temphfm1.add(createDayName1(MTradeOrderSoap.objects[i].getProperty("quantityPending").toString())); 
    temphfm1.add(createDayName1(MTradeOrderSoap.objects[i].getProperty("securityName").toString())); 
    temphfm1.add(createDayName1(MTradeOrderSoap.objects[i].getProperty("priceType").toString())); 
    temphfm1.add(createDayName1(MTradeOrderSoap.objects[i].getProperty("orderOrigin").toString())); 

    temphfm1.add(ut.createDayName1(MTradeOrderSoap.objects[i].getProperty("orderStatus").toString())); 

} 

这个循环是将那些从SOAP响应来,而且把它命名为createDayName(方法),也给出below.Now这一切都为我的屏幕之一工作良好的价值观但是当我尝试按照这个为我的另一个屏幕我面临一个错误: - 警告:无法布局字段,不足高度或宽度

我已经设置了两个管理器的宽度和高度,但似乎没有任何工作。请为我提供支持。

public LabelField createDayName1(final String day) 
{ 
    LabelField cell = new LabelField("", Field.NON_FOCUSABLE) { 
     protected void layout(int width, int height) 
     { 
      int w = Display.getWidth()/7; 
      int h = 40; 
      super.layout(w, h); 
      super.setExtent(w, h); 
     } 

     protected void paint(Graphics g) 
     { 
      g.setColor(0xFF9912); 
      g.setFont(dayNameFont); 
      g.fillRect(0, 0, getWidth(), getHeight()); 
      g.setColor(Color.BLACK); 
      // g.setColor(0x466385); 
      g.drawText(day.trim(), getWidth()/2 - dayNameFont.getAdvance(day)/3, getHeight()/3 - dayNameFont.getHeight()/2); 
      super.paint(g); 
     } 

    }; 
    return cell; 
}            

回答

1

layout()sublayout(),你需要确保你比较宽度和高度要传递到setExtent()(和super.layout()/super.sublayout()为此事)的论点,因为他们是越来越发送到这些方法最大可用宽度和高度。如果您试图告诉场地更宽或更高(使用setExtent()),则无法正确显示。