How to merge cell in DefaultTableModel/JTable?

java, jtable, jtableheader, swing, tablecellrenderer

Solution

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:

setColumnIdentifiers(columnNames);

with:

this.columnIdentifiers = columnNames;

IE:

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(),
            columnIdentifiers.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:

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

Problem

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: Is there any method in java for this?

Original source

Related problems