2011-12-15 2 views
2

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

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

Initializing
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 = 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 
     } 
    } 
}; 

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

Есть ли какой-нибудь пример ??? ссылки приветствуются!

ответ

3

Проблема в вашей реализации 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 (или вы всегда можете его найти).

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

+0

Большое спасибо Vimal! Отличный рабочий пример! Оно работает! Что касается демонстрационного примера, который вы мне рекомендовали, я теперь смотрю его! Благодаря! вот скриншот http://www.flickr.com/photos/[email protected]/6525971703/in/photostream –

+0

Pic выглядит великолепно, рад, что он сработал :) Путь к демонстрации lwuit - это [здесь] (http: //java.net/projects/lwuit/sources/svn/show/LWUIT_1_5/Apps/LWUITDemo?rev=1642) – Vimal

+0

У меня есть еще один вопрос для вас! как установить строку utf-8 в заголовок формы Lwuit? Я устанавливаю 'fMain = new Form (" блабла ");' и когда я запустил это, заголовок формы будет пустым! Поддерживает ли он 'utf-8'? Если да, как установить строку utf-8 в ее заголовок? –

Смежные вопросы