通过覆盖`createCell`将图像组件添加到表格单元格

时间:2011-12-15 11:49:51

标签: java-me lwuit

我正在使用LWUIT并使用Table显示数据,比如航班信息! 我没有用文字写空气公司,而是用图标替换它们。 因此,我需要覆盖protected Component createCell(Object value, final int row, final int column, boolean editable)的{​​{1}}方法。

这就是我实施的方式:

初始化

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) { }

需要帮助才能将Image添加到表格单元格!!!

有什么例子吗???欢迎链接!

1 个答案:

答案 0 :(得分: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(或者你可以随时谷歌)。

如果您需要更具体的帮助,请与我们联系。