【问题标题】:Set background color table cell in codenameone在代号中设置背景颜色表单元格
【发布时间】:2021-05-24 09:27:30
【问题描述】:

我想在 codenameone 中设置几个单元格的背景色 我想知道是否有一个功能可以做到这一点 我知道如何在表格定义中设置行的背景颜色。但是要为每一行设置一行。 但是有像setvalue这样的东西吗?像 cell(row, column).getallstyles.bgcolor=

【问题讨论】:

    标签: codenameone


    【解决方案1】:

    表格单元格是根据模型数据动态创建的,因此您需要覆盖单元格创建方法,例如:

    Table table = new Table(model) {
        @Override
        protected Component createCell(Object value, int row, int column, boolean editable) { 
            Component cell = super.createCell(value, row, column, editable);
            
            if(!isValidValue(value)) { 
                cell.getAllStyles().setFgColor(0xff0000);
            }
            return cell;
        }
    };
    

    这会将所有具有无效值的单元格设置为红色。

    【讨论】:

    • Thanx Shai,我想知道。我的表是静态的,我只更改两列单元格的数据。当单元格的颜色不取决于单元格的值而是取决于另一个变量时,我将如何更改静态表中单元格的颜色。就像我有一个单元格的数据 {2,5,10,1} 2 是行,5 列,10 是值,1 是将单元格背景设置为红色的标志。我该怎么做?
    • 您可以在模型中添加一个方法来确定颜色,然后使用int color = ((MyModel)getModel()).getCellColor(row, rolumn); 之类的东西,然后将其设置为颜色...如果有一些预先设置,您也可以使用setUIID确定颜色并将样式与 CSS 分开
    • thanx Shai 我不知道我必须如何将您的答案付诸实践。我必须在 de defaulttablemodel 中放入代码。我现在通过为每个颜色添加 de defaultmodel 来解决我的问题,就像这个示例代码一样。但是,当您想更改示例代码的颜色时,使用类似 tabelmodel.setColor(row, column, color) 会更容易 if(row ==e && column == b) { cell.getAllStyles().setBgColor (0x0000ff); cell.getAllStyles().setBgTransparency(255); cell.getAllStyles().setFgColor(0xFFFFFF, true); }
    • 继承表模型并添加类似 int[][] 的颜色;然后确保它使用正确的默认值初始化为正确的大小。然后为单个单元格添加 getter/setter。当您编写上面的方法时,只需向下转换为您的默认模型子类并调用正确的方法。
    猜你喜欢
    • 2019-10-21
    • 2012-06-06
    • 2011-10-10
    • 2010-11-21
    • 2015-06-02
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多