我正在制作一个简单的模拟游戏,用户购买商品,然后在价格上涨的时候卖掉它们。 我有一个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(),但它们似乎没有用。
提前干杯以获得任何帮助。
答案 0 :(得分:1)
每当您希望更新表时,都必须更改表模型。
DefaultTableModel model = (DefaultTableModel)priceTable.getModel();
model.addRow(new Object[] {item1, item2, item3});
添加到模型后,表格将自动更新。
答案 1 :(得分:1)
您应该对模型进行任何更改,然后模型应该将通知发送回表格,以便可以更新表格
见
的内容
tableModel.setValueAt(row, column, game.getItem1Price());
例如