在Swing UI视图中更新表数据的问题

时间:2013-03-14 00:10:13

标签: java swing

我正在Netbeans中设计一个用户界面,并且在让我的一个表工作时遇到了问题。当我调用此方法时,其中的数据不会更新:

public void UpdateTable() {
    DefaultTableModel TableModel = new DefaultTableModel();
    //(new Object[] { "ID", "Name", "Age" "Sex" "Address" "blah" }, 5)

    TableView.setModel(TableModel);

    for (Patient k : PatientList) {
        String TableID = String.valueOf(k.getAccountNumber());
        String TableName = k.getName();
        String TableAge = String.valueOf(k.getAge());
        String TableAddress = k.getAddress();
        String TableSex = k.getSex();
        String TablePhone = k.getPhone();

        Object[] Col = { "Name", "Code", "age", "blah", "Who", "ghg" };
        Object[] Data = { TableID, TableName, TableAge, TableAddress,
                TableSex, TablePhone };

        TableModel.addRow(Data, Col); //here
        JTableHeader header = TableView.getTableHeader();

        repaint();
    }

    System.out.println("Model Set");
    TableView.setModel(TableModel);
}

错误发生在我评论的那一行上,我对如何解决这个问题感到很困惑。

1 个答案:

答案 0 :(得分:1)

首先阅读Java Docs

使用DefaultTableModel创建“空”表模型的方法之一是做类似的事情......

DefaultTableModel model = new DefaultTableModel(
                                    new Object[]{"ID", "Name", "Age" "Sex" "Address" "blah"},
                                    0);

这很重要。您不希望模型中存在任何现有行。

只有两种addRow方法。

Object[] Data = { TableID, TableName, TableAge, TableAddress, TableSex, TablePhone };
model.addRow(data);

摆脱第一个TableView.setModel(TableModel);JTableHeader header = TableView.getTableHeader();以及repaint();,因为它们没有添加任何值

我强烈建议您阅读How to use tables以获取更多信息