gpt4 book ai didi

java - 这种方法有什么问题 - (在 Jlist 中添加元素)?

转载 作者:行者123 更新时间:2023-11-29 05:09:18 24 4
gpt4 key购买 nike

我目前正在创建购物车模拟程序。主 GUI 包含两个列表,一个是产品列表或库存。 (产品存储在启动时自动加载的 .dat 文件中)另一个是空白的,用于模拟我的购物篮。这个想法是能够将我的库存中的元素扫描到结账篮中。当发生这种情况时,我想要一个我创建的文本字段来动态更新购物篮中所有项目的成本。

下面是我的扫描按钮的方法,它应该执行上面的操作:

 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);
}

目前扫描该项目会将其添加到列表中,但总计会打印出奇怪的结果。 (无论其实际值(value)如何**,每件元素增加 5.5)。它还会在项目名称下打印一行 javax.swing.JList[,0,0,344x326,layout=java.awt.BorderLa... .

下面是我的 CartItem 和 ItemList 的类,如果它们可能有帮助的话。谢谢。

-购物车项目

import java.io.*;

public class CartItem implements Serializable {

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

public CartItem() {

}

public CartItem (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;
}
}

-项目列表

import javax.swing.DefaultListModel;

public class ItemList extends DefaultListModel {
public ItemList(){
super();
}
public void addCartItem(String barcodeNo, String itemName, String price){
super.addElement(new CartItem(barcodeNo, itemName, price));
}

public CartItem findItemByName(String name){
CartItem temp;
int indexLocation = -1;
for (int i = 0; i < super.size(); i++) {
temp = (CartItem)super.elementAt(i);
if (temp.getItemName().equals(name)){
indexLocation = i;
break;
}
}

if (indexLocation == -1) {
return null;
} else {
return (CartItem)super.elementAt(indexLocation);
}
}

public CartItem findItemByBarcode(String id){
CartItem temp;
int indexLocation = -1;
for (int i = 0; i < super.size(); i++) {
temp = (CartItem)super.elementAt(i);
if (temp.getBarcodeNo().equals(id)){
indexLocation = i;
break;
}
}

if (indexLocation == -1) {
return null;
} else {
return (CartItem)super.elementAt(indexLocation);
}
}

public void removeItem(String id){
CartItem empToGo = this.findItemByBarcode(id);
super.removeElement(empToGo);
}

最佳答案

您正在将 JList 本身 添加到结帐篮中,这没有意义:

checkoutBasket.addElement(list);

javax.swing.JList[,0,0,344x326,layout=java.awt.BorderLa.... 显示某些东西正在显示 toString() JList 的表示,可能是您的结帐篮。


关于,

Adds 5.5 for each item regardless of their actual value

我认为您当前的代码没有说明为什么会发生这种情况,您可能想要创建并发布一个 mcve .

其他想法:

  • 不要使用 String 来表示价格,而是考虑一个数字字段,如果您想要准确的金钱,可以考虑使用 BigDecimal。
  • 您看起来将自己的观点与模型混合得太多了。尽量让它们分开,这意味着,您可能应该有更多的非 GUI 类,包括一个代表购物篮的类,以及任何其他名词。

关于java - 这种方法有什么问题 - (在 Jlist 中添加元素)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29243845/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com