我有一个包含几个数字列的表。我可以正确地对齐行列,但我不能右击标题列。我认为,原因是因为PdfPHeaderCell构造函数不接受Phrase对象,所以我必须使用cell.addElement()将其置于复合模式,忽略我指定的对齐。
我发现实现我正在寻找的效果的唯一方法是创建一个段落,为其分配对齐,然后将其放在标题中。这对我来说似乎有点笨拙,因为我不需要段落的任何特征,我只需要对齐它。
有更简洁的方法吗?
/**
* Builds a basic header cell from the given string
*
* @param content
* @param alignment
* @return PdfPHeaderCell
*/
protected static PdfPHeaderCell getGenericHeaderCell(String content, Integer alignment)
{
PdfPHeaderCell cell = new PdfPHeaderCell();
Paragraph p = new Paragraph();
p.add(new Phrase(content, TABLE_HEADER));
if (alignment != null)
{
p.setAlignment(alignment);
}
cell.addElement(p);
cell.setBorder(Rectangle.BOTTOM);
cell.setBorderColorBottom(TABLE_HEADER_BORDERCOLOR);
cell.setBorderWidthBottom(1);
cell.setPaddingTop(0);
return cell;
}
答案 0 :(得分:0)
首先:你需要一个Phrase
但是你使用Paragraph
,所以你可以替换:
Paragraph p = new Paragraph();
p.add(new Phrase(content, TABLE_HEADER));
if (alignment != null)
{
p.setAlignment(alignment);
}
使用:
Phrase p = new Phrase(content, TABLE_HEADER);
if (alignment != null)
{
p.setAlignment(alignment);
}
代码中的实际错误是您使用addElement()
。您声称在文本模式下创建了一个单元格,但是忘了使用addElement()
使单元格切换到复合模式。
您可以通过替换以下内容来解决此问题:
cell.addElement(p);
使用:
cell.setPhrase(p);
使单元格保持文本模式。