多列列表字段

时间:2011-10-25 05:14:55

标签: blackberry

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

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()的方法,该方法也在下面给出。现在这一切都适用于我的其中一个屏幕但是当我尝试按照我的另一个屏幕我面临一个错误: - 警告:无法布局字段,高度或宽度不足

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

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 个答案:

答案 0 :(得分:1)

layout()sublayout()中,您需要确保比较传递给setExtent()的宽度和高度(以及super.layout() / super.sublayout()对于那些被发送到这些方法的参数,因为它们是最大可用宽度和高度。如果您试图告诉Field比可用的更宽或更高(使用setExtent()),它将无法正常显示。