Nikhil Chilwant Nikhil Chilwant - 11 months ago 512
Java Question

How to merge cell in DefaultTableModel/JTable?

I searched a lot and got some answers for this Q. but many of them referred to links which give 404 error.
I want to make table like this:

No. of cells to be merged is not fixed

Is there any method in java for this?


MultiSpanCellTableExample demonstrates how to merge cells by creating a custom TableUI. There seem to be a problem in this example that causes StackOverflowError, at least in Java 6. To fix this, inside AttributiveCellTableModel.setDataVector() replace:



this.columnIdentifiers = columnNames;


public void setDataVector(Vector newData, Vector columnNames) {
    if (newData == null)
        throw new IllegalArgumentException(
                "setDataVector() - Null parameter");
    dataVector = new Vector(0);
    // setColumnIdentifiers(columnNames);
    this.columnIdentifiers = columnNames;
    dataVector = newData;

    cellAtt = new DefaultCellAttribute(dataVector.size(),

    newRowsAdded(new TableModelEvent(this, 0, getRowCount() - 1,
            TableModelEvent.ALL_COLUMNS, TableModelEvent.INSERT));

The problem is that setColumnIdentifiers calls into setDataVector hence triggering the StackOverflowError. Once fixed, this is how the example looks like:

enter image description here

There is also a ready solution from JIDE, unfortunately it is not free. Here is for example CellSpanTable:

enter image description here