如何自定义表格组件的标题行(在codenameone中)

如何自定义表格组件的标题行(在codenameone中),codenameone,Codenameone,如何实现如图所示的标题结构,以便对表组件中提供的参数进行一定程度的区分 如图中所示,表格分为热侧和冷侧两部分。热侧下有一些参数,冷侧下有一些参数。至少需要这么多 我正在根据您的ans修改我的问题: String[][] tableData = { { "Density", "Volume Flow", "T (in)","T (out)","Flow", "Specific Heat", "Density", "Volume Flow",

如何实现如图所示的标题结构,以便对表组件中提供的参数进行一定程度的区分

如图中所示,表格分为热侧和冷侧两部分。热侧下有一些参数,冷侧下有一些参数。至少需要这么多

我正在根据您的ans修改我的问题:

String[][] tableData = {
                 { "Density", "Volume Flow", "T (in)","T (out)","Flow", "Specific Heat", "Density", "Volume Flow", 
                    "T (in)","T (out)","Flow", "Specific Heat", "Duty", "UA"}
         };

    final CustomTableModel tableModel = new CustomTableModel (
                new String[]  {"Hot Side", "","","","","Cold Side","","","","","",""}, tableData,true);

dataTable =  new Table(tableModel) {


         @Override
            protected Constraint createCellConstraint(Object value, int row, int column) {

                Constraint con = super.createCellConstraint(value, row, column);
                if(row == -1 && (column == 0 || column == 5) ) {
                    con.setHorizontalSpan(5);
                }
                return con;
            }
        @Override
        protected Component createCell(Object value, final int row, final int column, boolean editable) {

            if(row == -1) {
                    final Button headerButton = new Button((String)value);
                    headerButton.setUIID(getUIID() + "Header");
                    headerButton.getUnselectedStyle().setAlignment(Component.CENTER);
                    headerButton.getSelectedStyle().setAlignment(Component.CENTER);
                    headerButton.setFlatten(true);


                   return headerButton;
               }
                // Conditions for Other rows
                   ...
            }
标题行中只有两列“热端”和“冷端”,其余行中有14列。我尝试了不同的条件,但没有得到这个结构。我应该设置什么条件来获得结构。我想我在这里做错了什么

这就是我所尝试的:

            @Override
            protected Constraint createCellConstraint(Object value, int row, int column) {

                Constraint con = super.createCellConstraint(value, row, column);
                if(row == -1 && (column == 0 || column == 5) ) {
                    con.setHorizontalSpan(5);
                }
                return con;
            }
我的模型是:

final CustomTableModel tableModel = new CustomTableModel (
                new String[]  {"Hot Side", "","","","","Cold Side","","","","","",""}, tableData,true);
这是屏幕的预览:

您可以通过覆盖
createCell
方法自定义表中的任何单元格,这包括标记为-1行的标题单元格(如果我没记错的话)

在这种情况下,标题区域需要“跨越”,您可以通过覆盖约束行为来做到这一点:

protected TableLayout.Constraint createCellConstraint(Object value, int row, int column) {
    TableLayout.Constraint tl = super.createCellConstraint(value, row, column);
    if(this is the cell I want to span) {
       tl.setHorizontalSpan(4);
    }
    return tl;
}

你应该在问题中提供全部信息。我已经删除了我的答案。我已经根据你的答案修改了问题。这是跨越,但不是在一个正确的方式。我所做的是将其应用于-1行和列0和1。但我有一张空桌子。我还尝试了一些其他条件,将空列放在标题行中,在这种情况下,我得到了表的一半(仅限于热端)。是否有必要在标题行和其余行中使用相同数量的列?很难说,我建议您尝试一个简单的测试用例,使用较小的样本,然后缩小中断的范围。如果我在标题行中使用两列,那么其余行也需要两列(我不清楚)。即使我在标题行中添加空列并尝试只展开两列,标题行中很少有列相互重叠,并且在其余行中显示很少的列(14行中有7列或8列)。对于这种情况,您有什么建议?如果我理解正确,您只需要对要跨越的特定列进行跨越,而忽略其余部分。例如,如果(row=-1&&column==0)我以前尝试过(许多条件之一)。这次我也附上了截图。在屏幕截图中,您可以在标题行中看到许多列。我不希望这里有空栏,只有两栏--“热端”和“冷端”。是否有可能像我分享的第一个屏幕截图一样实现(查看标题行)?