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?