如何计算JList中所有元素的总和?

时间:2015-03-24 14:43:35

标签: java swing sum add

我正在创建一个购物车模拟,其中包含我想要添加到一起的产品列表,并显示它们被添加到购物篮中的总数(作为jlist实现)。

在我的主课程中,我有一个带动作监听器的按钮,可以从我的库存清单中取出物品并将它们添加到购物篮中。

scanBtn.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent evt) {
                        checkoutBasket.addElement(productList.getSelectedValuesList());
                    }
                });

此外,我在篮子下方设置了一个JTextField,我想用动态更新总成本,因为我将项目添加到购物车。我的问题是我怎么能这样做?谢谢。

                cartTotalField = new JTextField();
                getContentPane().add(cartTotalField);
                cartTotalField.setBounds(581, 441, 233, 28);

购物车项目类:

import java.io.*;

public class CartItem implements Serializable {

    private String barcodeNo;
    private String itemName;
    private String price;

    public CheckoutItem() {

    }

    public CheckoutItem (String barno, String in, String cost) {
            barcodeNo = barno;
            itemName = in;
            price = cost;
    }

    public String getBarcodeNo(){
        return barcodeNo;
    }

    public String getItemName(){
        return itemName;
    }

    public void setitemName(String itemName){
            this.itemName = itemName;
        }

    public String getPrice(){
        return price;
    }


    public String toString(){
        return barcodeNo + ": " + itemName + ", " + price;
    }

    public Object getID() {
        // TODO Auto-generated method stub
        return null;
    }
}

1 个答案:

答案 0 :(得分:2)

在你的actionPerformed中,你可以做这样的事情(当然,这是一个非常天真的方法来获得它,你可能会想到更好的事情):

@Override
public void actionPerformed(ActionEvent evt) {
  //Get the newly added list values.
  JList list = productList.getSelectedValuesList();
  double totalAddedValue = 0.0;
  double oldCartValue    = 0.0;

  //Iterate to get the price of the new items.
  for (int i = 0; i < list.getModel().getSize(); i++) {
    CartItem item = (CartItem) list.getModel().getElementAt(i);
    totalAddedValue += Double.ParseDouble(item.getPrice());
  }

  //Set total price value as an addition to cart total field.

  //cartTotalField must be accessible here.
  string cartFieldText = cartTotalField.getText();

  //Check that cartTextField already contains a value.
  if(cartTextField != null && !cartTextField.isEmpty())
  {
    oldCartValue = Double.parseDouble(cartFieldText);
  }

  cartTotalField.setText(String.valueOf(oldCartValue  + totalAddedValue));
  checkoutBasket.addElement(list);
}

更新:通常,您应该考虑为数字转换添加检查和/或异常处理。一个好主意也是在double课程中将价格属性更改为int(或CartItem,相应地修改上述代码)。