如何使用二维数组刷新JTable

时间:2015-02-21 11:14:30

标签: java arrays swing jtable

我遇到了二维数组JTable刷新问题。 JTable值会发生变化,但只有当我鼠标点击JTable中的每一行时,它们才会刷新。有没有办法正常刷新JTable,或者重新加载JTable,还是需要特定的表模型?

JTable像这样填充:

while(rs.next()){   
                rows[row][col] = rs.getString("Level"); col++;
                rows[row][col] = rs.getString("study"); col++;
                rows[row][col] = rs.getString("1pn"); col++;
                rows[row][col] = rs.getString("2pn"); col++;
                rows[row][col] = rs.getString("1pk"); col++;
                rows[row][col] = rs.getString("2pk"); col++;
                rows[row][col] = rs.getString("summ"); col++;
                rows[row][col] = rs.getString("teori"); col++;
                rows[row][col] = rs.getString("p-d"); col++;
                rows[row][col] = rs.getString("ind"); col++;
                rows[row][col] = rs.getString("gat"); col++;
                rows[row][col] = rs.getString("pav"); col++;
                col = 0;
                row++;

在组合框更改时更改了JTable:

                            while(rs.next()){
                                rows[row][col] = rs.getString("Level"); col++;
                                rows[row][col] = rs.getString("study"); col++;
                                rows[row][col] = rs.getString("1pn"); col++;
                                rows[row][col] = rs.getString("2pn"); col++;
                                rows[row][col] = rs.getString("1pk"); col++;
                                rows[row][col] = rs.getString("2pk"); col++;
                                rows[row][col] = rs.getString("kopa"); col++;
                                rows[row][col] = rs.getString("teori"); col++;
                                rows[row][col] = rs.getString("p-d"); col++;
                                rows[row][col] = rs.getString("ind"); col++;
                                rows[row][col] = rs.getString("gat"); col++;
                                rows[row][col] = rs.getString("pav"); col++;
                                col = 0;
                                row++;
                            }

1 个答案:

答案 0 :(得分:2)

  

我遇到了二维数组JTable刷新问题

这句话毫无意义。 JTable使用TableModel来存储数据。也许您有一个使用二维数组来保存数据的自定义TableModel。您永远不应该直接更新数据存储。

  

首先,编辑单元格更容易,

不,不是。如果要更改TableModel中的数据,则使用TableModel的setValueAt(...)方法。然后TableModel将通知表数据已更改,表将重新绘制单元格。

  

我在DefaultTableModel中无法做到的很多事情

我对此表示怀疑。 DefaultTableModel是完全动态的。你可以:

  1. 轻松编辑单元格
  2. 删除数据行
  3. 添加数据行
  4. 清除模型中的所有数据。
  5. 在你的情况下,你正在做一个新的查询,所以我建议:

    1. 您使用DefualtTableModel的setRowCount(0)方法清除数据。
    2. 在处理ResultSet中的每一行时,您可以创建一个Array来表示一行数据,然后使用DefaultTableModel的addRow(...)方法添加每一行数据。
    3. DefaultTableModel并不完美,但在您了解如何使用TableModel之前,它是一个很好的起点。