2017-12-19 20 views
0

データベースからデータを取得してjtableに入れていますが、データベースから11アイテムが来ていますが、第1アイテムだけがjtableに11回印刷されています。私は間違っています私はステートメントでループ変数を使用していますので、自動的にインクリメントされますが、動作しません。データベースからテーブルにデータを追加

 try{ 

     java.util.Vector v=DatabaseManager.getGroceryItems(bean.getCategoryId()); 


     for(int i=0;i<v.size();i++){ 

      GroceryItemsBean bean2=(GroceryItemsBean)v.elementAt(i); 

       row.add(bean2.getItemId()); 
       row.add(bean2.getItemName()); 
       row.add(bean2.getBarcode()); 
       row.add(bean2.getStock()); 
       row.add(bean2.getPurchasePrice()); 
       row.add(bean2.getUnitPrice()); 
       row.add(bean2.getDisc()); 
       row.add(bean2.getTax()); 
       row.add(bean2.getUnit()); 

       dataModel.addRow(row); 

     } 

    }catch(Exception e){ 
     e.printStackTrace(); 
     javax.swing.JOptionPane.showMessageDialog(this, "error: "+e.getMessage()); 
    } 

The output is here

+2

どこで、どのように行が定義されていますか? – isaace

+0

ローはVectorクラスのオブジェクトです。これはクラス内でグローバルに定義されています –

答えて

0

あなたは、データベース内のデータの行ごとに新しい「行」ベクトルを作成する必要があります。

GroceryItemsBean bean2=(GroceryItemsBean)v.elementAt(i); 
Vector<Object> row = new Vector<Object>(); 
+0

あなたの答えを使用しました。それは私のために働きました。今はすべてのレコードがテーブルに印刷されています。最後の項目も来て、私はstockTable.removeAll()を使用しています;新しいアイテムを置く前にテーブルからすべてを削除するが、それは動作しない –

+0

JTableではなくDefaultTableModelからデータを削除する必要があります。 'setRowCount(0)'を使うと、モデルからすべての項目を削除できます。 – camickr

0

それ以外の場合は、まだループの最初の反復からの値を持って、私はあなたのコードを十分に見ることができないが、それはループの中であなたのような新しいrowオブジェクトを探します。

または、各繰り返しの最後に行をクリアする必要があります。

dataModel.addRow(row); 
row.clear()