Ответ 1
MultiSpanCellTableExample демонстрирует, как объединить ячейки, создав пользовательский TableUI
. Кажется, что проблема в этом примере вызывает StackOverflowError
, по крайней мере, на Java 6. Чтобы исправить это, внутри AttributiveCellTableModel.setDataVector()
замените:
setColumnIdentifiers(columnNames);
с:
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));
}
Проблема заключается в том, что setColumnIdentifiers
вызывает setDataVector
, поэтому запускает StackOverflowError
. После исправления это выглядит так:
Существует также готовое решение от JIDE, к сожалению, оно не является бесплатным. Вот, например, CellSpanTable
: