Поле со списком из нескольких столбцов - PullRequest
0 голосов
/ 25 октября 2011

Возникла проблема при отображении нескольких столбцов подряд. Мне нужно несколько столбцов и несколько строк списка полей. Сейчас я пытаюсь сделать это, используя поле метки, в одном из моих случаев оно работает довольно хорошо, но в другом случае я столкнулся с проблемой, пожалуйста, помогите мне. Мой код:

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()));

}   

Этот цикл вставляет значения, которые приходят из мыльного ответа, и передает его методу 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 Ответ

1 голос
/ 25 октября 2011

В layout() и sublayout() вам необходимо убедиться, что вы сравниваете ширину и высоту, с которыми вы передаете setExtent()super.layout() / super.sublayout() в этом отношении) с аргументами, отправляемыми наэти методы, потому что они являются максимально доступной шириной и высотой.Если вы попытаетесь указать Поле шире или выше (используя setExtent()), чем то, что доступно, оно не сможет отображаться правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...