добавление компонента изображения в ячейку таблицы путем переопределения `createCell` - PullRequest
2 голосов
/ 15 декабря 2011

Я использую LWUIT и показываю данные с Table, скажем, информацией о рейсе! Вместо того, чтобы писать авиакомпании с текстом, я просто люблю заменять их иконками. Итак, мне нужно переопределить protected Component createCell(Object value, final int row, final int column, boolean editable) метод Table.

Вот как я реализовал:

Инициализация

imgAln[i]=null;
try {
    imgAln[i] = Image.createImage(strPathToImage[i]);
                        //e.g /uta.png,/somonair.png and so on
    lAln[i] = new Label(imgAln[i]);
} catch (IOException e) { }

Создание объекта Table

Table table = new Table(model) {
    protected Component createCell(Object value, final int row, 
               final int column, boolean editable) {
        final Component c = super.createCell(value, row, column, editable);
        if (column == 6) {
            return lAln[value];  //it does not work here 
        }
    }
};

нужна помощь, чтобы добавить изображение в ячейку таблицы !!!

Есть ли пример ??? ссылки приветствуются!

1 Ответ

3 голосов
/ 15 декабря 2011

Проблема в вашей реализации createCell(...) заключается в том, что она не возвращает super.createCell(...), когда column is not 6.Также ваш массив меток (lAln) может быть создан неправильно.Попробуйте мою реализацию ниже, но убедитесь, что вы сохраняете соответствующее имя изображения в таблицах моделей 'column 0.

Это должно решить эту проблему:

TableModel model = new DefaultTableModel(
    new String[]{"Uneditable", "Editable", "CheckBox", "Multiline"}, 
    new Object[][]{
        {"/animations.png", "", new Boolean(false), "Multi-line text\nright here"},
        {"/buttons.png", "", new Boolean(true), "Further text that\nspans lines"},
        {"/dialogs.png", "", new Boolean(true), "No span"},
        {"/fonts.png", "", new Boolean(false), "Spanning\nFor\nEvery\nWord"},
    });

Table table = new Table(model) {
    protected Component createCell(Object value, final int row, 
                    final int column, boolean editable) {
        if (row != -1 && column == 0) {
            try {
                            //In my case Column 0 store the resource path names
                return new Label(Image.createImage((String)value));     
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
        return super.createCell(value, row, column, editable);
    }
};

ПРИМЕЧАНИЕ: Если вы видите имена вместо изображений в столбце 0, это означает, что путь к изображению неверен, исправьте его, чтобы увидеть изображения.

Удалось ли вам взглянуть на TableLayoutDemo.javaв проекте LWUITDemo?Если я правильно помню, это идет в комплекте с пакетом LWUIT1.5.zip (или вы всегда можете найти его в Google).

Дайте мне знать, если вам нужна более конкретная помощь.

...