com.lowagie.text
Class Table

java.lang.Object
  extended by com.lowagie.text.Rectangle
      extended by com.lowagie.text.Table
All Implemented Interfaces:
Element, LargeElement

public class Table
extends Rectangle
implements LargeElement

A Table is a Rectangle that contains Cells, ordered in some kind of matrix.

Tables that span multiple pages are cut into different parts automatically. If you want a table header to be repeated on every page, you may not forget to mark the end of the header section by using the method endHeaders().

The matrix of a table is not necessarily an m x n-matrix. It can contain holes or cells that are bigger than the unit. Believe me or not, but it took some serious thinking to make this as user friendly as possible. I hope you will find the result quite simple (I love simple solutions, especially for complex problems). I didn't want it to be something as complex as the Java GridBagLayout.

Example:

 // Remark: You MUST know the number of columns when constructing a Table.
 //         The number of rows is not important.
 Table table = new Table(3);
 table.setBorderWidth(1);
 table.setBorderColor(new Color(0, 0, 255));
 table.setPadding(5);
 table.setSpacing(5);
 Cell cell = new Cell("header");
 cell.setHeader(true);
 cell.setColspan(3);
 table.addCell(cell);
 table.endHeaders();
 cell = new Cell("example cell with colspan 1 and rowspan 2");
 cell.setRowspan(2);
 cell.setBorderColor(new Color(255, 0, 0));
 table.addCell(cell);
 table.addCell("1.1");
 table.addCell("2.1");
 table.addCell("1.2");
 table.addCell("2.2");
 table.addCell("cell test1");
 cell = new Cell("big cell");
 cell.setRowspan(2);
 cell.setColspan(2);
 table.addCell(cell);
 table.addCell("cell test2");
 
The result of this code is a table:
header
example cell with colspan 1 and rowspan 2 1.1 2.1
1.2 2.2
cell test1 big cell
cell test2

See Also:
Rectangle, Element, Row, Cell

Field Summary
protected  boolean autoFillEmptyCells
          Boolean to automatically fill empty cells before a table is rendered (takes CPU so may be set to false in case of certainty)
protected  boolean complete
          Indicates if the PdfPTable is complete once added to the document.
protected  boolean convert2pdfptable
          if you want to generate tables the old way, set this value to false.
protected  boolean notAddedYet
          Indicates if this is the first time the section was added.
 
Fields inherited from class com.lowagie.text.Rectangle
backgroundColor, border, borderColor, borderColorBottom, borderColorLeft, borderColorRight, borderColorTop, borderWidth, borderWidthBottom, borderWidthLeft, borderWidthRight, borderWidthTop, BOTTOM, BOX, LEFT, llx, lly, NO_BORDER, RIGHT, rotation, TOP, UNDEFINED, urx, ury, useVariableBorders
 
Fields inherited from interface com.lowagie.text.Element
ALIGN_BASELINE, ALIGN_BOTTOM, ALIGN_CENTER, ALIGN_JUSTIFIED, ALIGN_JUSTIFIED_ALL, ALIGN_LEFT, ALIGN_MIDDLE, ALIGN_RIGHT, ALIGN_TOP, ALIGN_UNDEFINED, ANCHOR, ANNOTATION, AUTHOR, CCITT_BLACKIS1, CCITT_ENCODEDBYTEALIGN, CCITT_ENDOFBLOCK, CCITT_ENDOFLINE, CCITTG3_1D, CCITTG3_2D, CCITTG4, CELL, CHAPTER, CHUNK, CREATIONDATE, CREATOR, HEADER, IMGRAW, IMGTEMPLATE, JBIG2, JPEG, JPEG2000, KEYWORDS, LIST, LISTITEM, MARKED, MULTI_COLUMN_TEXT, PARAGRAPH, PHRASE, PRODUCER, PTABLE, RECTANGLE, ROW, SECTION, SUBJECT, TABLE, TITLE, YMARK
 
Constructor Summary
Table(int columns)
          Constructs a Table with a certain number of columns.
Table(int columns, int rows)
          Constructs a Table with a certain number of columns and a certain number of Rows.
Table(Table t)
          Copy constructor (shallow copy).
 
Method Summary
 void addCell(Cell cell)
          Adds a Cell to the Table.
 void addCell(Cell aCell, int row, int column)
          Adds a Cell to the Table at a certain row and column.
 void addCell(Cell aCell, java.awt.Point aLocation)
          Adds a Cell to the Table at a certain location.
 void addCell(Phrase content)
          Adds a Cell to the Table.
 void addCell(Phrase content, java.awt.Point location)
          Adds a Cell to the Table.
 void addCell(java.lang.String content)
          Adds a Cell to the Table.
 void addCell(java.lang.String content, java.awt.Point location)
          Adds a Cell to the Table.
 void addColumns(int aColumns)
          Gives you the possibility to add columns.
 void complete()
          Will fill empty cells with valid blank Cells
 PdfPTable createPdfPTable()
          Create a PdfPTable based on this Table object.
 void deleteAllRows()
          Deletes all rows in this table.
 void deleteColumn(int column)
          Deletes a column in this table.
 boolean deleteLastRow()
          Deletes the last row in this table.
 boolean deleteRow(int row)
          Deletes a row.
 int endHeaders()
          Marks the last row of the table headers.
 void flushContent()
          Flushes the content that has been added.
 int getAlignment()
          Gets the horizontal alignment.
 java.util.ArrayList getChunks()
          Gets all the chunks in this element.
 int getColumns()
          Gets the number of columns.
 Cell getDefaultCell()
          Gets the default layout of the Table.
 Cell getDefaultLayout()
          Deprecated. As of iText 2.0.7, replaced by getDefaultCell(), scheduled for removal at 2.2.0
 java.awt.Dimension getDimension()
          Gets the dimension of this table
 java.lang.Object getElement(int row, int column)
          returns the element at the position row, column (Cast to Cell or Table)
 int getLastHeaderRow()
          Gets the last number of the rows that contain headers.
 float getOffset()
          Gets the offset of this table.
 float getPadding()
          Gets the cellpadding.
 float[] getProportionalWidths()
          Gets the proportional widths of the columns in this Table.
 float getSpacing()
          Gets the cellspacing.
 float getWidth()
          Gets the table width (a percentage).
 float[] getWidths(float left, float totalWidth)
          Gets an array with the positions of the borders between every column.
 void insertTable(Table aTable)
          To put a table within the existing table at the current position generateTable will of course re-arrange the widths of the columns.
 void insertTable(Table aTable, int row, int column)
          To put a table within the existing table at the given position generateTable will of course re-arrange the widths of the columns.
 void insertTable(Table aTable, java.awt.Point aLocation)
          To put a table within the existing table at the given position generateTable will of course re-arrange the widths of the columns.
 boolean isCellsFitPage()
          Checks if the cells of this Table have to fit a page.
 boolean isComplete()
          Indicates if the element is complete or not.
 boolean isConvert2pdfptable()
          Method to check if the Table should be converted to a PdfPTable or not.
 boolean isLocked()
           
 boolean isNestable()
          Checks if this element is nestable.
 boolean isNotAddedYet()
          Indicates if this is the first time the section is added.
 boolean isTableFitsPage()
          Checks if this Table has to fit a page.
 java.util.Iterator iterator()
          Gets an Iterator of all the Rows.
 boolean process(ElementListener listener)
          Processes the element by adding it (or the different parts) to an ElementListener.
 void setAlignment(int value)
          Sets the horizontal alignment.
 void setAlignment(java.lang.String alignment)
          Sets the alignment of this paragraph.
 void setAutoFillEmptyCells(boolean aDoAutoFill)
          Enables/disables automatic insertion of empty cells before table is rendered.
 void setCellsFitPage(boolean fitPage)
          Allows you to control when a page break occurs.
 void setComplete(boolean complete)
          If you invoke setComplete(false), you indicate that the content of the object isn't complete yet; it can be added to the document partially, but more will follow.
 void setConvert2pdfptable(boolean convert2pdfptable)
          If set to true, iText will try to convert the Table to a PdfPTable.
 void setDefaultCell(Cell value)
          Sets the default layout of the Table to the provided Cell
 void setDefaultLayout(Cell value)
          Deprecated. As of iText 2.0.7, replaced by setDefaultCell(Cell), scheduled for removal at 2.2.0
 void setLastHeaderRow(int value)
          Sets the horizontal alignment.
 void setLocked(boolean locked)
           
 void setNotAddedYet(boolean notAddedYet)
          Sets the indication if the section was already added to the document.
 void setOffset(float offset)
          Sets the offset of this table.
 void setPadding(float value)
          Sets the cellpadding.
 void setSpacing(float value)
          Sets the cellspacing.
 void setTableFitsPage(boolean fitPage)
          Allows you to control when a page break occurs.
 void setWidth(float width)
          Sets the width of this table (in percentage of the available space).
 void setWidths(float[] widths)
          Sets the widths of the different columns (percentages).
 void setWidths(int[] widths)
          Sets the widths of the different columns (percentages).
 int size()
          Gets the number of rows in this Table.
 int type()
          Gets the type of the text element.
 
Methods inherited from class com.lowagie.text.Rectangle
cloneNonPositionParameters, disableBorderSide, enableBorderSide, getBackgroundColor, getBorder, getBorderColor, getBorderColorBottom, getBorderColorLeft, getBorderColorRight, getBorderColorTop, getBorderWidth, getBorderWidthBottom, getBorderWidthLeft, getBorderWidthRight, getBorderWidthTop, getBottom, getBottom, getGrayFill, getHeight, getLeft, getLeft, getRight, getRight, getRotation, getTop, getTop, hasBorder, hasBorders, isContent, isUseVariableBorders, normalize, rectangle, rotate, setBackgroundColor, setBorder, setBorderColor, setBorderColorBottom, setBorderColorLeft, setBorderColorRight, setBorderColorTop, setBorderWidth, setBorderWidthBottom, setBorderWidthLeft, setBorderWidthRight, setBorderWidthTop, setBottom, setGrayFill, setLeft, setRight, setTop, setUseVariableBorders, softCloneNonPositionParameters, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface com.lowagie.text.Element
isContent, toString
 

Field Detail

autoFillEmptyCells

protected boolean autoFillEmptyCells
Boolean to automatically fill empty cells before a table is rendered (takes CPU so may be set to false in case of certainty)


convert2pdfptable

protected boolean convert2pdfptable
if you want to generate tables the old way, set this value to false.


notAddedYet

protected boolean notAddedYet
Indicates if this is the first time the section was added.

Since:
iText 2.0.8

complete

protected boolean complete
Indicates if the PdfPTable is complete once added to the document.

Since:
iText 2.0.8
Constructor Detail

Table

public Table(int columns)
      throws BadElementException
Constructs a Table with a certain number of columns.

Parameters:
columns - The number of columns in the table
Throws:
BadElementException - if the creator was called with less than 1 column

Table

public Table(int columns,
             int rows)
      throws BadElementException
Constructs a Table with a certain number of columns and a certain number of Rows.

Parameters:
columns - The number of columns in the table
rows - The number of rows
Throws:
BadElementException - if the creator was called with less than 1 column

Table

public Table(Table t)
Copy constructor (shallow copy).

Method Detail

process

public boolean process(ElementListener listener)
Processes the element by adding it (or the different parts) to an ElementListener.

Specified by:
process in interface Element
Overrides:
process in class Rectangle
Parameters:
listener - an ElementListener
Returns:
true if the element was processed successfully

type

public int type()
Gets the type of the text element.

Specified by:
type in interface Element
Overrides:
type in class Rectangle
Returns:
a type

getChunks

public java.util.ArrayList getChunks()
Gets all the chunks in this element.

Specified by:
getChunks in interface Element
Overrides:
getChunks in class Rectangle
Returns:
an ArrayList

isNestable

public boolean isNestable()
Description copied from interface: Element
Checks if this element is nestable.

Specified by:
isNestable in interface Element
Overrides:
isNestable in class Rectangle
Returns:
true if this element can be nested inside other elements.
Since:
iText 2.0.8
See Also:
Element.isNestable()

getColumns

public int getColumns()
Gets the number of columns.

Returns:
a value

size

public int size()
Gets the number of rows in this Table.

Returns:
the number of rows in this Table

getDimension

public java.awt.Dimension getDimension()
Gets the dimension of this table

Returns:
dimension

getDefaultCell

public Cell getDefaultCell()
Gets the default layout of the Table.

Returns:
a cell with all the defaults
Since:
2.0.7

setDefaultCell

public void setDefaultCell(Cell value)
Sets the default layout of the Table to the provided Cell

Parameters:
value - a cell with all the defaults
Since:
2.0.7

getLastHeaderRow

public int getLastHeaderRow()
Gets the last number of the rows that contain headers.

Returns:
a rownumber

setLastHeaderRow

public void setLastHeaderRow(int value)
Sets the horizontal alignment.

Parameters:
value - the new value

endHeaders

public int endHeaders()
Marks the last row of the table headers.

Returns:
the number of the last row of the table headers

getAlignment

public int getAlignment()
Gets the horizontal alignment.

Returns:
a value

setAlignment

public void setAlignment(int value)
Sets the horizontal alignment.

Parameters:
value - the new value

setAlignment

public void setAlignment(java.lang.String alignment)
Sets the alignment of this paragraph.

Parameters:
alignment - the new alignment as a String

getPadding

public float getPadding()
Gets the cellpadding.

Returns:
a value

setPadding

public void setPadding(float value)
Sets the cellpadding.

Parameters:
value - the new value

getSpacing

public float getSpacing()
Gets the cellspacing.

Returns:
a value

setSpacing

public void setSpacing(float value)
Sets the cellspacing.

Parameters:
value - the new value

setAutoFillEmptyCells

public void setAutoFillEmptyCells(boolean aDoAutoFill)
Enables/disables automatic insertion of empty cells before table is rendered. (default = false) As some people may want to create a table, fill only a couple of the cells and don't bother with investigating which empty ones need to be added, this default behavior may be very welcome. Disabling is recommended to increase speed. (empty cells should be added through extra code then)

Parameters:
aDoAutoFill - enable/disable autofill

getWidth

public float getWidth()
Gets the table width (a percentage).

Overrides:
getWidth in class Rectangle
Returns:
the table width

setWidth

public void setWidth(float width)
Sets the width of this table (in percentage of the available space).

Parameters:
width - the width

isLocked

public boolean isLocked()
Returns:
the locked

setLocked

public void setLocked(boolean locked)
Parameters:
locked - the locked to set

getProportionalWidths

public float[] getProportionalWidths()
Gets the proportional widths of the columns in this Table.

Returns:
the proportional widths of the columns in this Table

setWidths

public void setWidths(float[] widths)
               throws BadElementException
Sets the widths of the different columns (percentages).

You can give up relative values of borderwidths. The sum of these values will be considered 100%. The values will be recalculated as percentages of this sum.

example:

 float[] widths = {2, 1, 1};
 table.setWidths(widths)
 
The widths will be: a width of 50% for the first column, 25% for the second and third column.

Parameters:
widths - an array with values
Throws:
BadElementException

setWidths

public void setWidths(int[] widths)
               throws DocumentException
Sets the widths of the different columns (percentages).

You can give up relative values of borderwidths. The sum of these values will be considered 100%. The values will be recalculated as percentages of this sum.

Parameters:
widths - an array with values
Throws:
DocumentException

isTableFitsPage

public boolean isTableFitsPage()
Checks if this Table has to fit a page.

Returns:
true if the table may not be split

setTableFitsPage

public void setTableFitsPage(boolean fitPage)
Allows you to control when a page break occurs.

When a table doesn't fit a page, it is split in two parts. If you want to avoid this, you should set the tableFitsPage value to true.

Parameters:
fitPage - enter true if you don't want to split cells

isCellsFitPage

public boolean isCellsFitPage()
Checks if the cells of this Table have to fit a page.

Returns:
true if the cells may not be split

setCellsFitPage

public void setCellsFitPage(boolean fitPage)
Allows you to control when a page break occurs.

When a cell doesn't fit a page, it is split in two parts. If you want to avoid this, you should set the cellsFitPage value to true.

Parameters:
fitPage - enter true if you don't want to split cells

setOffset

public void setOffset(float offset)
Sets the offset of this table. Normally a newline is added before you add a Table object. This newline uses the current leading. If you want to control the space between the table and the previous element yourself, you have to set the offset of this table.

Parameters:
offset - the space between this table and the previous object.

getOffset

public float getOffset()
Gets the offset of this table.

Returns:
the space between this table and the previous element.

isConvert2pdfptable

public boolean isConvert2pdfptable()
Method to check if the Table should be converted to a PdfPTable or not.

Returns:
false if the table should be handled the old fashioned way.

setConvert2pdfptable

public void setConvert2pdfptable(boolean convert2pdfptable)
If set to true, iText will try to convert the Table to a PdfPTable.

Parameters:
convert2pdfptable - true if you want iText to try to convert the Table to a PdfPTable

addCell

public void addCell(Cell aCell,
                    int row,
                    int column)
             throws BadElementException
Adds a Cell to the Table at a certain row and column.

Parameters:
aCell - The Cell to add
row - The row where the Cell will be added
column - The column where the Cell will be added
Throws:
BadElementException

addCell

public void addCell(Cell aCell,
                    java.awt.Point aLocation)
             throws BadElementException
Adds a Cell to the Table at a certain location.

Parameters:
aCell - The Cell to add
aLocation - The location where the Cell will be added
Throws:
BadElementException

addCell

public void addCell(Cell cell)
Adds a Cell to the Table.

Parameters:
cell - a Cell

addCell

public void addCell(Phrase content)
             throws BadElementException
Adds a Cell to the Table.

This is a shortcut for addCell(Cell cell). The Phrase will be converted to a Cell.

Parameters:
content - a Phrase
Throws:
BadElementException - this should never happen

addCell

public void addCell(Phrase content,
                    java.awt.Point location)
             throws BadElementException
Adds a Cell to the Table.

This is a shortcut for addCell(Cell cell, Point location). The Phrase will be converted to a Cell.

Parameters:
content - a Phrase
location - a Point
Throws:
BadElementException - this should never happen

addCell

public void addCell(java.lang.String content)
             throws BadElementException
Adds a Cell to the Table.

This is a shortcut for addCell(Cell cell). The String will be converted to a Cell.

Parameters:
content - a String
Throws:
BadElementException - this should never happen

addCell

public void addCell(java.lang.String content,
                    java.awt.Point location)
             throws BadElementException
Adds a Cell to the Table.

This is a shortcut for addCell(Cell cell, Point location). The String will be converted to a Cell.

Parameters:
content - a String
location - a Point
Throws:
BadElementException - this should never happen

insertTable

public void insertTable(Table aTable)
To put a table within the existing table at the current position generateTable will of course re-arrange the widths of the columns.

Parameters:
aTable - the table you want to insert

insertTable

public void insertTable(Table aTable,
                        int row,
                        int column)
To put a table within the existing table at the given position generateTable will of course re-arrange the widths of the columns.

Parameters:
aTable - The Table to add
row - The row where the Cell will be added
column - The column where the Cell will be added

insertTable

public void insertTable(Table aTable,
                        java.awt.Point aLocation)
To put a table within the existing table at the given position generateTable will of course re-arrange the widths of the columns.

Parameters:
aTable - the table you want to insert
aLocation - a Point

addColumns

public void addColumns(int aColumns)
Gives you the possibility to add columns.

Parameters:
aColumns - the number of columns to add

deleteColumn

public void deleteColumn(int column)
                  throws BadElementException
Deletes a column in this table.

Parameters:
column - the number of the column that has to be deleted
Throws:
BadElementException

deleteRow

public boolean deleteRow(int row)
Deletes a row.

Parameters:
row - the number of the row to delete
Returns:
boolean true if the row was deleted; false if not

deleteAllRows

public void deleteAllRows()
Deletes all rows in this table. (contributed by dperezcar@fcc.es)


deleteLastRow

public boolean deleteLastRow()
Deletes the last row in this table.

Returns:
boolean true if the row was deleted; false if not

complete

public void complete()
Will fill empty cells with valid blank Cells


getElement

public java.lang.Object getElement(int row,
                                   int column)
returns the element at the position row, column (Cast to Cell or Table)

Parameters:
row -
column -
Returns:
dimension
Since:
2.1.0 (was made private in 2.0.3)

getWidths

public float[] getWidths(float left,
                         float totalWidth)
Gets an array with the positions of the borders between every column.

This method translates the widths expressed in percentages into the x-coordinate of the borders of the columns on a real document.

Parameters:
left - this is the position of the first border at the left (cellpadding not included)
totalWidth - this is the space between the first border at the left and the last border at the right (cellpadding not included)
Returns:
an array with border positions

iterator

public java.util.Iterator iterator()
Gets an Iterator of all the Rows.

Returns:
an Iterator

createPdfPTable

public PdfPTable createPdfPTable()
                          throws BadElementException
Create a PdfPTable based on this Table object.

Returns:
a PdfPTable object
Throws:
BadElementException

isNotAddedYet

public boolean isNotAddedYet()
Indicates if this is the first time the section is added.

Returns:
true if the section wasn't added yet
Since:
iText2.0.8

setNotAddedYet

public void setNotAddedYet(boolean notAddedYet)
Sets the indication if the section was already added to the document.

Parameters:
notAddedYet -
Since:
iText2.0.8

flushContent

public void flushContent()
Description copied from interface: LargeElement
Flushes the content that has been added.

Specified by:
flushContent in interface LargeElement
Since:
iText 2.0.8
See Also:
LargeElement.flushContent()

isComplete

public boolean isComplete()
Description copied from interface: LargeElement
Indicates if the element is complete or not.

Specified by:
isComplete in interface LargeElement
Returns:
indicates if the element is complete according to the user.
Since:
iText 2.0.8
See Also:
LargeElement.isComplete()

setComplete

public void setComplete(boolean complete)
Description copied from interface: LargeElement
If you invoke setComplete(false), you indicate that the content of the object isn't complete yet; it can be added to the document partially, but more will follow. If you invoke setComplete(true), you indicate that you won't add any more data to the object.

Specified by:
setComplete in interface LargeElement
Parameters:
complete - false if you'll be adding more data after adding the object to the document.
Since:
iText 2.0.8
See Also:
LargeElement.setComplete(boolean)

getDefaultLayout

public Cell getDefaultLayout()
Deprecated. As of iText 2.0.7, replaced by getDefaultCell(), scheduled for removal at 2.2.0

Gets the default layout of the Table.

Returns:
a cell with all the defaults

setDefaultLayout

public void setDefaultLayout(Cell value)
Deprecated. As of iText 2.0.7, replaced by setDefaultCell(Cell), scheduled for removal at 2.2.0

Sets the default layout of the Table to the provided Cell

Parameters:
value - a cell with all the defaults


iText 2.1.7