如何让我的JTable数据更新

时间:2013-09-03 19:43:40

标签: java swing jtable

我正在制作一个简单的模拟游戏,用户购买商品,然后在价格上涨的时候卖掉它们。 我有一个JTable,列出了当前价格,项目类型等项目,但我已经简化了代码,所以应该更容易查看:

public void example()
{
    Object rowData[][] = {             
        { "Item 1", ""+game.getItem1Price()+""},
        { "Item 2", ""+game.getItem2Price()+""},
        { "Item 3", ""+game.getItem3Price()+""}};
         //game.getItem1Price refers to a method in another class that returns the price of Item1


    String[] columnNames = {"Item Name",
                         "Item Price"};

    DefaultTableModel tableModel = new DefaultTableModel(rowData, columnNames) 
    {
        @Override
        public boolean isCellEditable(int row, int column) {
            //all cells false
            return false;
        }
    };

    JTable priceTable = new JTable();                     
    priceTable.setModel(tableModel);
    priceTable.setSelectionMode(1);
    priceTable.setRowSelectionAllowed(true);
    JScrollPane scrollPane = new JScrollPane(priceTable);  
    //then add table to frame
}

在每个回合结束时,价格会发生变化,我希望表格显示更改的价格,但我不知道如何更新表格。 我已经在网上找了很多方法,比如.repaint(),但它们似乎没有用。

提前干杯以获得任何帮助。

2 个答案:

答案 0 :(得分:1)

每当您希望更新表时,都必须更改表模型。

DefaultTableModel model = (DefaultTableModel)priceTable.getModel();
model.addRow(new Object[] {item1, item2, item3});

添加到模型后,表格将自动更新。

答案 1 :(得分:1)

您应该对模型进行任何更改,然后模型应该将通知发送回表格,以便可以更新表格

的内容
tableModel.setValueAt(row, column, game.getItem1Price());

例如