Как установить заголовок для Границы с LWUIT 1.4?Как раскрасить нечетные и парные строки таблицы? - PullRequest
0 голосов
/ 24 мая 2011

Я использую LWUIT 1.4

1) В моей форме есть Контейнер, основанный на BoxLayout (ось Y), есть две метки, добавленные в этот контейнер, и я хочу создать границу с названием , которая будет помещена в контейнер поэтому он окружает две метки. Я знаю, как создать Границу, но я не знаю, как установить заголовок для Границы с LWUIT 1.4! Итак, как установить заголовок на Границу с LWUIT 1.4?

2) В моей форме есть таблица, основанная на классе DefaultTableModel, метод getValueAt которого реализован с перечислением хранилища записей, и я хочу, чтобы строки таблицы были окрашены в соответствии с индексом строки: например, если индекс строки нечетный, тогда его цвет фона должен быть белым, а если индекс строки является парным, то цвет фона должен быть серым. Как этого добиться?

3) Почему не работают методы TableLayout.Constraint? Я хочу, чтобы два столбца таблицы имели одинаковый размер, то есть 50% от общей ширины таблицы для каждого столбца, но когда я запускаю приложение, первый столбец не имеет одинакового размера со вторым столбцом, если его данные не довольно долго ! Так как же сделать столбцы одинакового размера?

Большое спасибо действительно

Ответы [ 2 ]

1 голос
/ 26 мая 2011

Я загрузил последнюю версию редактора ресурсов с вашего блога и определил фон и границы «выбранных» версий компонента TableCell, но дополнительный прямоугольник всегда отображается во время выполнения, когда я щелкаю ячейку таблицы последнего столбца!Я попытался вызвать tableName.repaint() в методе, реализованном компонентом f ocusGained(), потому что я зарегистрировал его в focuslistener, но прямоугольник не исчезает.Я создал Диалог, чтобы показать выбранный номер строки, и когда Диалог показывается, когда я нажимаю третью программную кнопку, прямоугольник исчезает !!!Возможно, фокус потерян из ячейки таблицы !!И всякий раз, когда я стреляю, я получал тот же номер строки, что и раньше;поэтому нет ошибки номера строки.Так какой код я должен написать, или какое свойство я должен отредактировать в Редакторе, чтобы получить тот же эффект, что и при отображении Диалога для исчезновения прямоугольника?

1 голос
/ 25 мая 2011

1) В багажнике есть титульная граница, но я думаю, что она была добавлена ​​в 1.4.Вы можете нарисовать что-то вроде этого, переопределив метод Container paintBorder (обратите внимание, что вам потребуется достаточное заполнение компонентов, чтобы граница отображалась правильно. Это код из версии SVN, который должен работать с очень небольшими изменениями (просто измените c на это):

Font f=c.getStyle().getFont();
int titleW=f.stringWidth(borderTitle);
int topPad=c.getStyle().getPadding(Component.TOP);
int topY=y+(topPad-thickness)/2;
if (c.isRTL()) {
    g.fillRect(x+width-TITLE_MARGIN, topY, TITLE_MARGIN , thickness); //top (segment before the title)
    g.fillRect(x, topY, width-(TITLE_MARGIN +titleW+TITLE_SPACE*2), thickness); //top (segment after the title)
    g.drawString(borderTitle, x+width-(TITLE_MARGIN +titleW+TITLE_SPACE), y+(topPad-f.getHeight())/2);
} else {
    g.fillRect(x, topY, TITLE_MARGIN , thickness); //top (segment before the title)
    g.fillRect(x+TITLE_MARGIN +titleW+TITLE_SPACE*2, topY, width-(TITLE_MARGIN +titleW+TITLE_SPACE*2), thickness); //top (segment after the title)
    g.drawString(borderTitle, x+TITLE_MARGIN+TITLE_SPACE, y+(topPad-f.getHeight())/2);
}

g.fillRect(x, y+height-thickness, width, thickness); //bottom
g.fillRect(x, topY, thickness, height); //left
g.fillRect(x+width-thickness, topY, thickness, height); //right

2) Извлечь таблицу и переопределить метод:

protected Component createCell(Object value, int row, int column, boolean editable)

вызвать super.createCell () и установить UIID возвращаемого значения в «OddRow», «EvenRow» соответственно,Примените стиль в редакторе ресурсов или к темам, которые вам нравятся.

3) Я не знаю о такой проблеме.Если это происходит в текущем SVN, вы должны зарегистрировать проблему в трекере проблем проектов.

...