0

Object[][] のデータを表示する JTable があります。同じ画面に、ユーザーがアイテムをリストのオブジェクトに追加できるフォームもあります。私の人生では、ユーザーが「アイテムの追加」ボタンを押したときにテーブルに表示されたリストを更新することはできません。

(配列に正常に追加され、画面に印刷できますが、テーブルを変更することはできません。)

テーブルのクレートはこちら

    Object[] tableHeadings = {"Item Name","Qty/Weight","Price"};
    ShoppingApplication shoppingApplication = new ShoppingApplication();
    Object[][] tableData = shoppingApplication.generatePurchaseTableData();
    final JTable tblBill = new JTable(tableData, tableHeadings);

生成されるテーブル データは次のとおりです。

    /**
     * Generates data in the correct format to go into the table 
     * from the purchase list
     * @return 
     */
     public Object[][] generatePurchaseTableData(){ 

     Object[][] results = new Object[listOfPurchases.size()][2];
     for (int i = 0; i<listOfPurchases.size(); i++){
          Purchase purchase = listOfPurchases.get(i);
          Object[] innerObject = 
                   {purchase.getProductName(),
                    purchase.getPricePerUnit(),
                    purchase.getTotalPrice()};
                 results[i] = innerObject;
         }
     System.out.println(results.length);
     return results;
         }
     }

これがアクションリスナーです

/* Add Action Listeners */
cmdAddItem.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e){

        AddPurchase addPurchase = new AddPurchase(
           (radWeight.isSelected()) ? 'w' :(radQty.isSelected()) ? 'q' : 'u', 
               txtNameOfItem.getText(), 
               txtAmount.getText(), 
               txtUnits.getText(), 
               txtPricePerUnit.getText());

         ShoppingApplication sa = new ShoppingApplication();
         Object[][] newData = sa.generatePurchaseTableData();
         //TODO make tblBill updata it's contents
                }
 }); 

上記のコードから、私はあまり努力していないように見えますが、実際には何時間もこれを機能させようとしており、さまざまな方法やデータ構造を使用してみましたが、すぐに戻る場所がありませんでしたそれが上記のコードです。

私はこれを少しグーグルで検索しましたが、何も見つからないようです.なぜ他の誰もこれに行き詰まっていないように見えるのか考えられません. (多分私はただ太っているだけかもしれません)しかし、うまくいけば、この投稿は他の人にも役立ちます.

前もって感謝します :)

4

2 に答える 2

2

には、値を保持するか、実際のデータへのアダプタでJTableあるデータ モデル ( ) があります。TableModel

テーブル モデル内のデータを変更するか、新しいテーブル モデルを設定することによって、テーブル内のデータを更新できます。

あなたの場合、次を使用できますjavax.swing.table.DefaultTableModel

TableModel tableModel=new DefaultTableModel(newData, tableHeadings);
tblBill.setModel(tableModel);
于 2013-11-04T11:01:21.000 に答える
1

ユーザーが「アイテムの追加」ボタンを押したときに更新します。

項目を 1 つだけ追加するのに、テーブル全体を再作成するのはなぜですか? それはあまり効率的ではありません。

代わりに、テーブルに新しい行を追加する必要があります。このコード (上記のコードと同様) は、DefaultTableModel を使用していることを前提としています。

DefaultTableModel model = (DefaultTableModel)table.getModel();
model.addRow(...);
于 2013-11-04T15:45:36.980 に答える