如何计算 JList 中所有元素的总和?
How can I calculate the sum of all elements within my JList ?
我正在创建一个购物车模拟,其中包含我想要加在一起的产品列表,并在将它们添加到购物车篮子时显示总数(作为 jlist 实现)。
在我的主 class 中,我有一个带有动作侦听器的按钮,用于从我的库存清单中取出商品并将它们添加到购物篮中。
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);
购物车商品 Class:
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;
}
}
在你的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);
}
更新:通常,您应该考虑为数字转换添加检查 and/or 异常处理。一个好主意是在 CartItem
class.[= 中将价格 属性 更改为 double
(或 int
,相应地修改上述代码) 15=]
我正在创建一个购物车模拟,其中包含我想要加在一起的产品列表,并在将它们添加到购物车篮子时显示总数(作为 jlist 实现)。
在我的主 class 中,我有一个带有动作侦听器的按钮,用于从我的库存清单中取出商品并将它们添加到购物篮中。
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);
购物车商品 Class:
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;
}
}
在你的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);
}
更新:通常,您应该考虑为数字转换添加检查 and/or 异常处理。一个好主意是在 CartItem
class.[= 中将价格 属性 更改为 double
(或 int
,相应地修改上述代码) 15=]