如何在Vaadin Flow Grid中结合if判断使用setTextAlign对齐列数据
解决方案
可以实现根据数据类型调整列对齐的需求,你原有代码无法运行是因为Java语法不允许在链式方法调用的过程中直接插入if语句打断调用链,调整写法即可正常运行。
推荐实现方式1:拆分链式调用(逻辑扩展性更好)
先把列实例暂存到变量中,单独处理对齐逻辑后再配置剩余属性:
// 第一步:创建列实例 Grid.Column<Record> column = grid.addColumn(item -> { return item == null ? "-" : item.getColumnData(strSelectColumnNames[fc]); }); // 第二步:根据数据类型设置对齐 if(colClass.equalsIgnoreCase("java.lang.Double")) { column.setTextAlign(ColumnTextAlign.END); } else { column.setTextAlign(ColumnTextAlign.START); } // 第三步:配置其余列属性 column.setWidth((colWidth - 1) + "em") .setHeader(strSelectColumnNames[fc]);
实现方式2:三目运算符嵌入链式调用(写法更简洁)
如果只有两种对齐分支,可以直接用三目运算符把判断逻辑嵌到链式调用中,不用拆分代码:
Grid.Column<Record> firstNameColumn = grid .addColumn(item -> item == null ? "-" : item.getColumnData(strSelectColumnNames[fc])) // 直接在参数中做类型判断 .setTextAlign(colClass.equalsIgnoreCase("java.lang.Double") ? ColumnTextAlign.END : ColumnTextAlign.START) .setWidth((colWidth - 1) + "em") .setHeader(strSelectColumnNames[fc]);
注意
需要确保导入的对齐枚举类路径正确:com.vaadin.flow.component.grid.ColumnTextAlign
内容的提问来源于stack exchange,提问作者nick
相关产品推荐
相关产品推荐

