2016-08-22 47 views
-1

java新手。 所以,这是我的代码。每当我点击添加按钮,它也会添加我添加的以前的数据。jylist显示器在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

两种解决方案,

首先解决方案,只需添加你想要添加到模型中的对象:从模型

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并添加每个咖啡元素到表中。 每次添加所有数组,所以第一次添加1st元素,第二次添加1st和2nd,第三次添加1st,2nd和3rd等等。 考虑添加到表只有新的咖啡,而不是整个阵列:

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

类名更改(谢谢) –