如何自定义表格组件的标题行(在codenameone中)
如何实现如图所示的标题结构,以便对表组件中提供的参数进行一定程度的区分 如图中所示,表格分为热侧和冷侧两部分。热侧下有一些参数,冷侧下有一些参数。至少需要这么多 我正在根据您的ans修改我的问题:如何自定义表格组件的标题行(在codenameone中),codenameone,Codenameone,如何实现如图所示的标题结构,以便对表组件中提供的参数进行一定程度的区分 如图中所示,表格分为热侧和冷侧两部分。热侧下有一些参数,冷侧下有一些参数。至少需要这么多 我正在根据您的ans修改我的问题: String[][] tableData = { { "Density", "Volume Flow", "T (in)","T (out)","Flow", "Specific Heat", "Density", "Volume Flow",
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)我以前尝试过(许多条件之一)。这次我也附上了截图。在屏幕截图中,您可以在标题行中看到许多列。我不希望这里有空栏,只有两栏--“热端”和“冷端”。是否有可能像我分享的第一个屏幕截图一样实现(查看标题行)?