DefaultTableModel.java [plain text]
package javax.swing.table;
import java.io.Serializable;
import java.util.Vector;
import javax.swing.event.TableModelEvent;
public class DefaultTableModel extends AbstractTableModel
implements Serializable
{
static final long serialVersionUID = 6680042567037222321L;
protected Vector dataVector;
protected Vector columnIdentifiers;
public DefaultTableModel()
{
this(0, 0);
}
public DefaultTableModel(int numRows, int numColumns)
{
Vector defaultNames = new Vector(numColumns);
Vector data = new Vector(numRows);
for (int i = 0; i < numColumns; i++)
{
defaultNames.add(super.getColumnName(i));
Vector tmp = new Vector(numColumns);
tmp.setSize(numColumns);
data.add(tmp);
}
setDataVector(defaultNames, data);
}
public DefaultTableModel(Vector columnNames, int numRows)
{
Vector data = new Vector();
int numColumns = 0;
if (columnNames != null)
numColumns = columnNames.size();
while (0 < numRows--)
{
Vector rowData = new Vector();
rowData.setSize(numColumns);
data.add(rowData);
}
setDataVector(data, columnNames);
}
public DefaultTableModel(Object[] columnNames, int numRows)
{
this(convertToVector(columnNames), numRows);
}
public DefaultTableModel(Vector data, Vector columnNames)
{
setDataVector(data, columnNames);
}
public DefaultTableModel(Object[][] data, Object[] columnNames)
{
this(convertToVector(data), convertToVector(columnNames));
}
public Vector getDataVector()
{
return dataVector;
}
public void setDataVector(Vector data, Vector columnNames)
{
dataVector = data;
columnIdentifiers = columnNames;
for (int r = 0; r < data.size(); r++) {
((Vector) dataVector.get(r)).setSize(columnNames.size());
}
}
public void setDataVector(Object[][] data, Object[] columnNames)
{
setDataVector(convertToVector(data),
convertToVector(columnNames));
}
public void newDataAvailable(TableModelEvent event)
{
fireTableChanged(event);
}
public void newRowsAdded(TableModelEvent event)
{
fireTableChanged(event);
}
public void rowsRemoved(TableModelEvent event)
{
fireTableChanged(event);
}
public void setColumnIdentifiers(Vector columnIdentifiers)
{
this.columnIdentifiers = columnIdentifiers;
setColumnCount(columnIdentifiers.size());
}
public void setColumnIdentifiers(Object[] columnIdentifiers)
{
setColumnIdentifiers(convertToVector(columnIdentifiers));
}
public void setNumRows(int numRows)
{
setRowCount(numRows);
}
public void setRowCount(int rowCount)
{
dataVector.setSize(rowCount);
fireTableDataChanged();
}
public void setColumnCount(int columnCount)
{
for (int i = 0; i < dataVector.size(); ++i)
{
((Vector) dataVector.get(i)).setSize(columnCount);
}
columnIdentifiers.setSize(columnCount);
fireTableDataChanged();
}
public void addColumn(Object columnName)
{
addColumn(columnName, (Object[]) null);
}
public void addColumn(Object columnName, Vector columnData)
{
addColumn(columnName, columnData == null ? null : columnData.toArray());
}
public void addColumn(Object columnName, Object[] columnData) {
for (int i = 0; i < dataVector.size(); ++i)
{
((Vector) dataVector.get(i)).add(columnData == null ? null : columnData[i]);
}
columnIdentifiers.add(columnName);
fireTableDataChanged();
}
public void addRow(Vector rowData) {
dataVector.add(rowData);
fireTableDataChanged();
}
public void addRow(Object[] rowData) {
addRow(convertToVector(rowData));
}
public void insertRow(int row, Vector rowData) {
dataVector.add(row, rowData);
fireTableDataChanged();
}
public void insertRow(int row, Object[] rowData) {
insertRow(row, convertToVector(rowData));
}
public void moveRow(int startIndex, int endIndex, int toIndex) {
for (int index = 0; index < (endIndex - startIndex); index++) {
Vector vector = (Vector) dataVector.remove(startIndex);
dataVector.add(toIndex, vector);
}
fireTableDataChanged();
}
public void removeRow(int row) {
dataVector.remove(row);
fireTableDataChanged();
}
public int getRowCount() {
return dataVector.size();
}
public int getColumnCount() {
return columnIdentifiers.size();
}
public String getColumnName(int column) {
if (columnIdentifiers == null || column >= getColumnCount()) {
return super.getColumnName(column);
}
return (String) columnIdentifiers.get(column);
}
public boolean isCellEditable(int row, int column) {
return true;
}
public Object getValueAt(int row, int column) {
return ((Vector) dataVector.get(row)).get(column);
}
public void setValueAt(Object value, int row, int column) {
((Vector) dataVector.get(row)).set(column, value);
fireTableDataChanged();
}
protected static Vector convertToVector(Object[] data) {
if (data == null)
return null;
Vector vector = new Vector(data.length);
for (int i = 0; i < data.length; i++)
vector.add(data[i]);
return vector;
}
protected static Vector convertToVector(Object[][] data) {
if (data == null)
return null;
Vector vector = new Vector(data.length);
for (int i = 0; i < data.length; i++)
vector.add(convertToVector(data[i]));
return vector;
}
}