2016-11-21 9 views
0

私はいくつかの数値列を持つテーブルを持っています。行の列を正しく整列させることはできますが、ヘッダー列を右折することはできません。理由は、PdfPHeaderCellコンストラクタがPhraseオブジェクトを受け入れないため、cell.addElement()を使用して、指定した配置を無視してコンポジットモードにする必要があるからです。PdfPHeaderCellテキストモードでコンテンツを右揃えにします。

私が探している効果を得るために見つけた唯一の方法は、段落を作成し、その段落にアライメントを割り当て、それをヘッダーに配置することです。私は段落の特徴が必要ないので、それは私には少し不器用なようです。私はそれを整列させるだけです。

これを行うクリーナー方法はありますか?

/** 
    * 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

まず、この:あなたは置き換えることができますので、あなたが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); 

テキストモードでセルを保持していること。