В настоящее время я занимаюсь созданием программы моделирования корзины покупок. Основной графический интерфейс пользователя содержит два списка, один из которых представляет собой список продуктов или инвентаря. (продукты, хранящиеся в файле.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);
}
В настоящее время, однако, сканирование элемента добавит его в список, но напечатает странные результаты в общей сумме. (Добавляет 5.5 для каждого элемента независимо от их фактического значения **). Он также напечатает строку под именем элемента как таковой javax.swing.JList[,0,0,344x326,layout=java.awt.BorderLa....
Ниже приведены классы для моего CartItem и ItemList, если они могут помочь. Спасибо.
-Cart Пункт
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;
}
}
-ItemList
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, вероятно, вашу корзину проверки.
Что касается,
Добавляет 5.5 для каждого элемента независимо от их фактического значения
Я не думаю, что ваш текущий код показывает, почему это происходит, и вы можете захотеть создать и опубликовать mcve.
Другие мысли: