DefaultTableModel,添加行,动态列数

时间:2016-04-15 18:13:41

标签: java swing jtable defaulttablemodel

如上所述,我不知道连续多少列,所以很明显我遇到了String[]数组的问题。将至少有两列 - 这是给定的。

我如何解决这个限制?

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);

依旧......

3 个答案:

答案 0 :(得分:1)

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

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);

答案 1 :(得分:0)

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

int cols = table.getColumnCount();

使用您的模型,您可以通过这种方式设置行数和列数

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

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

答案 2 :(得分:0)

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

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