DefaultTableModel,添加行,动态列数

DefaultTableModel, add row, dynamic number of columns

如上所述,我不知道一行中会有多少列,所以显然我 运行 遇到了 String[] 数组的问题。至少会有 2 列 - 这是给定的。

我该如何解决这个限制?

DefaultTableModel tableModel = new DefaultTableModel(0,1+queryResult.size());



Object[] row = {t.getDate(),'some data'};

tableModel.addRow(row);

view.getPriceHistoryTable().setModel(tableModel);

但是如果 queryResult.size() 大于 1 那么我想做的是:

Object[] row = {t.getDate(),'some data','more data'};

tableModel.addRow(row);

view.getPriceHistoryTable().setModel(tableModel);

等等...

您可以通过 JTable 对象访问列模型并获得有关列的所有信息

int cols = table.getColumnCount();

使用您的模型,您可以这样设置行数和列数

model.setRowCount(rows); 
model.setColumnCount(cols);

因此您可以根据查询结果动态设置行数和列数

数组的大小不一定是编译时常量:

int colCount = 1 + queryResult.size();

String[] row = new String[colCount];
row[0] = t.getDate();

for(int i = 1; i < row.length; i++) {
    row[i] = "some data"; // or get data from somewhere else
}

tableModel.addRow(row);
for(int i=0; i < 1+queryResult.size(); i++)
    model.addColumn(i+1); // i+1 will be the header name for each column

首先执行此操作,然后您可以添加行