2016-11-21 2 views
0

Ich habe eine Tabelle, die ein paar Zahlenspalten hat. Ich kann die Zeilenspalten richtig ausrichten, aber ich kann die Kopfspalte nicht richtig ausrichten. Der Grund, glaube ich, liegt darin, dass der PdfPHeaderCell-Konstruktor kein Phrase-Objekt akzeptiert, daher muss ich cell.addElement() verwenden, was ihn in den Composite-Modus versetzt und die von mir spezifizierte Ausrichtung ignoriert.PdfPHeaderCell rechts Ausrichtung Inhalt im Textmodus

Der einzige Weg, den ich gefunden habe, um den Effekt zu erreichen, nach dem ich suche, ist, einen Absatz zu erstellen, die Ausrichtung zuzuweisen, und dann das in die Kopfzeile zu setzen. Das scheint ein wenig klobig zu sein, da ich keine Merkmale eines Absatzes brauche, ich muss es nur ausrichten.

Gibt es einen saubereren Weg, dies zu tun?

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

Antwort

0

Zunächst dies: Sie müssen ein Phrase aber Sie verwenden eine Paragraph, so dass Sie ersetzen:

Paragraph p = new Paragraph(); 
p.add(new Phrase(content, TABLE_HEADER)); 
if (alignment != null) 
{ 
    p.setAlignment(alignment); 
} 

mit:

Phrase p = new Phrase(content, TABLE_HEADER); 
if (alignment != null) 
{ 
    p.setAlignment(alignment); 
} 

Der tatsächliche Fehler im Code, ist die Tatsache, dass Sie addElement() verwenden. Sie behaupten, dass Sie eine Zelle im Textmodus erstellen, aber Sie vergessen, dass mit addElement() die Zelle in den zusammengesetzten Modus wechselt.

Sie können dieses Problem beheben, indem ersetzt:

cell.addElement(p); 

mit:

cell.setPhrase(p); 

, dass die Zelle im Textmodus hält.

Verwandte Themen