-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 に答える