0

我遇到了一个类似于我在这里读到的关于插入数据和添加的数据未显示在 jtable 上的问题。我尝试过 repaint() 和 revalidate(),但无济于事。

基本上,我有两个类 A 和 B。A 调用 B 类中的一个函数来向表中添加一行数据。这是代码。(顺便说一下,我使用 Netbeans 7.1.2 添加一个表,然后添加一些代码来处理更新。)

public void callUpdateTable(){
    DefaultTableModel myModel = (DefaultTableModel)jTable1.getModel();
    DateFormat dateFormate = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
    Object[] str = new Object[3];
    Date date = new Date();  

    str[0] = dateFormate.format(date);
    str[1] = "Robot";
    str[2] = "hello"; 
    // myModel.addRow(str);
    myModel.insertRow(1, str);
    myModel.setValueAt("Hello", 1, 2);
    System.out.println("count = " + myModel.getValueAt(1, 2));
    jTable1.repaint();
}

有趣的是在系统打印上它打印出我设置值的单元格(1,2)的值,但没有显示在表格上。谢谢您的帮助。

4

1 回答 1

4

最好能编写一个演示问题的SSCCE

没有必要打电话repaint()/revalidate()。由于insertRow()模型会通过执行来触发表刷新fireTableRowsInserted()

DefaultTableModel使用vector从零开始的索引。insertRow()调用Vector.insertElementAt()ArrayIndexOutOfBoundsException如果索引超出范围则抛出。

假设你的模型是空的,试试这个:

myModel.insertRow(0, str);

此外,请确保您与EDT上的表格进行交互。

于 2012-07-07T03:28:28.743 回答