2016-08-22 9 views
-1

Javaの初めて。 これは私のコードです。追加ボタンをクリックすると、追加した以前のデータも追加されます。Arraylistがjtableディスプレイで倍増

private void btnAddActionPerformed(java.awt.event.ActionEvent evt) { 

     DefaultTableModel model = (DefaultTableModel)table.getModel(); 

     coffee coff = new coffee(name.getText(),coffeeName.getText(),Integer.parseInt(coffeePrice.getText()),buttonGroup1.getSelection().getActionCommand(),(Integer)quanOrder.getValue()); 

     coffeeArray.add(coff); 

     for(int i = 0; i < coffeeArray.size(); i++) 
     { 
      String customerName = coffeeArray.get(i).getName(); 
      String cofName = coffeeArray.get(i).getCoffeeName(); 
      int price = coffeeArray.get(i).getuPrice(); 
      String OrderMode= coffeeArray.get(i).isOrderMode(); 
      int quantity = coffeeArray.get(i).getQuanOrder(); 

      Object[] rowCoffee = {customerName,cofName,price,OrderMode,quantity}; 

      model.addRow(rowCoffee); 
     } 
+1

Soooo ...どうしたんですか? – Orin

+0

これを修正する方法...詳細を入力してから初めて追加します(正常に動作します)。しかし、別のものを追加すると、私のjtableには前のデータが表示され、次に最近のデータが表示されます。 –

+0

テーブルモデルを設定していませんか?確かにそれを手に入れることができますが、私はそれがちょうど価値基準ではなく、参照ではないことを確信しています – 3kings

答えて

1

2つの溶液、

まずソリューション、ちょうどあなたがモデルに追加したいされているオブジェクトを追加します。

private void btnAddActionPerformed(java.awt.event.ActionEvent evt) { 

    DefaultTableModel model = (DefaultTableModel)table.getModel(); 

    coffee coff = new coffee(name.getText(),coffeeName.getText(),Integer.parseInt(coffeePrice.getText()),buttonGroup1.getSelection().getActionCommand(),(Integer)quanOrder.getValue()); 

    coffeeArray.add(coff); 

    //Instead of going through the for loop, adding objects you already have, just add the one you just added to the model. 

    model.addRow(new Object[] {coff.getName(), coff.getCoffeeName(), coff.getuPrice(), coff.isOrderMode(), coff.getQuanOrdered() }); 

第二の溶液を、通過、その後、モデルからすべてのテーブルを削除しますforループ:

private void btnAddActionPerformed(java.awt.event.ActionEvent evt) { 

    DefaultTableModel model = (DefaultTableModel)table.getModel(); 

    coffee coff = new coffee(name.getText(),coffeeName.getText(),Integer.parseInt(coffeePrice.getText()),buttonGroup1.getSelection().getActionCommand(),(Integer)quanOrder.getValue()); 

    coffeeArray.add(coff); 

    //Remove all rows before adding everything from ArrayList. 
    for(int i = 0; i < model.getRowCount(); i++) 
     model.removeRow(i); 

    for(int i = 0; i < coffeeArray.size(); i++) 
    { 
     String customerName = coffeeArray.get(i).getName(); 
     String cofName = coffeeArray.get(i).getCoffeeName(); 
     int price = coffeeArray.get(i).getuPrice(); 
     String OrderMode= coffeeArray.get(i).isOrderMode(); 
     int quantity = coffeeArray.get(i).getQuanOrder(); 

     Object[] rowCoffee = {customerName,cofName,price,OrderMode,quantity}; 

     model.addRow(rowCoffee); 
    } 
0

新しいコーヒー(真剣に小文字のクラス名?)を行coffeeArray.add(coff);はすべての配列coffeeArrayを循環させ、各コーヒー要素をテーブルに追加します。 毎回すべての配列を追加するので、第1要素を初めて追加するときは、第1要素と第2要素を追加する2回目、3回目は1番目、2番目、3番目を追加します。 。 テーブルに新しいコーヒーだけを追加し、配列全体を追加することを検討してください。

coffeeArray.add(coff); 
Object[] rowCoffee = {coff.getName(),coff.getCoffeeName(),coff.getPrice(),coff.isOrderMode(),coff.getQuanOrder()}; 
model.addRow(rowCoffee); 
+1

クラス名が変更されましたが、ループを削除しました(ありがとう) –

関連する問題