MultiSpanCellTableExample zeigt, wie Zellen zusammengeführt werden, indem eine benutzerdefinierte TableUI
erstellt wird. Es scheint ein Problem in diesem Beispiel zu sein, die StackOverflowError
, zumindest in Java 6. führt dies zu beheben, innerhalb AttributiveCellTableModel.setDataVector()
ersetzen:
setColumnIdentifiers(columnNames);
mit:
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));
}
Das Problem ist, dass setColumnIdentifiers
Anrufe in setDataVector
daher Trigger StackOverflowError
. Einmal festgelegt, ist dies, wie das Beispiel wie folgt aussieht:
Es gibt auch eine fertige Lösung von JIDE, leider ist es nicht kostenlos. Hier ist zum Beispiel CellSpanTable
:
In einem meiner Projekte verwende ich [diese SpanTable] (https://code.google.com/p/spantable/source/browse/SpanTable/src/main/java/spantable/?r=b5aa2f0d7bc6e0ced427562dcc22396b41963948). In einem anderen verwende ich Gruppen-Header aus [dieser SO-Antwort] (http://stackoverflow.com/a/11666046/2894369). Versuch sie. – alex2410
Sie sollten [this] (http://www.java3z.com/cwbwebhome/article/article5/swing_example/JTableExamples4.html) und/oder [this] (http://www.java2s.com/Code/Java /Swing-Components/MultiSpanCellTableExample.htm). – Qiu
@Qui Ausnahme im Thread "Haupt" java.lang.StackOverflowError –