-1

我正在制作一个简单的模拟游戏,用户购买物品,然后在价格上涨时将其出售。我有一个列出项目当前价格、项目类型等的 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() 但它们似乎不起作用。

提前欢呼任何帮助。

4

2 回答 2

1

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

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

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

于 2013-09-03T19:59:17.697 回答
1

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

类似的东西

tableModel.setValueAt(row, column, game.getItem1Price());

例如

于 2013-09-03T20:04:45.563 回答