Java 对象是否一直替换数组列表中的一个和另一个?

Java 对象是否一直替换数组列表中的一个和另一个?,java,methods,arraylist,field,Java,Methods,Arraylist,Field,我正在为一个java项目制作一个购物车,但在向数组列表添加多个对象时遇到了问题 我的数组是在类篮中创建的 package store; import java.util.ArrayList; import java.util.Iterator; import javax.swing.Spring; public class Basket { private double totalPrice; public int orderNumber=1; private

我正在为一个java项目制作一个购物车,但在向数组列表添加多个对象时遇到了问题

我的数组是在类篮中创建的

package store;

import java.util.ArrayList;
import java.util.Iterator;

import javax.swing.Spring;


public class Basket {

    private double totalPrice;
    public int orderNumber=1;

    private ArrayList<Product> basket = new ArrayList<Product>();
我第一次点击它时,它正确地显示了顺序,但是第二次我希望它显示两个相同的项目,因为应该创建和添加两个对象,但是计数器显示的数字仍然是一,并且顺序只显示一次。如果能在这方面得到任何帮助,我们将不胜感激

关于篮子创建位置的评论?它不是在private ArrayList basket=new ArrayList()


嗯。现在您发布了代码,错误显而易见:

public void actionPerformed(ActionEvent e) {
    Basket b = new Basket ();
因此,每次单击按钮时,都会调用
actionPerformed()
方法。每次调用它时,它都会创建一个新的Basket实例,其中包含一个新的
列表

篮子对象可能应该是UI类的一个字段,在构造函数中初始化,而不是
actionPerformed()
方法的局部变量


旁注:你不应该把产品清单暴露在外面。相反,您应该在Basket类中有一个方法
addProduct()
方法,该方法将产品添加到列表中,并将产品的价格添加到总价中。这就是封装的意义所在。如果希望类的用户能够迭代产品,则返回列表的只读视图,以防止他在背后添加产品:
返回集合。不可修改列表(篮)

您还没有显示将两个项目添加到篮子中的代码。我强烈怀疑您只创建了一个对象,并在列表中添加了对同一对象的两个引用。或者您的
GolfBags
代码包含静态变量。理想情况下,展示一个简短但完整的程序来演示问题。错误就在你没有展示的代码中。向我们展示如何以及在何处创建篮子,以及调用将高尔夫球袋添加到篮子中的方法的代码。篮子是否未在private ArrayList Basket=new ArrayList()行中创建;Basket类型的对象:它是在哪里创建的?每次单击按钮都会创建一个新的Basket对象。我如何才能将该项添加到数组列表中,而不必创建Basket类的新实例?正如我在回答中所说:Basket(即Basket实例)应该是该类的一个字段,而不是
actionPerformed()
方法的局部变量。如何使其成为类的字段,与;你成功了吗?
private Basket Basket=new Basket()。我觉得你还不了解Java和OO的基础知识。在使用Swing之前,请阅读或阅读一本好的介绍性书籍,Swing很复杂,需要对这些基础知识有很好的理解。
GolfBags gb = new GolfBags(1,productType, productPrice, productName, quantity, colour, size);

b.getBasket().add(gb);
System.out.println(b.getBasket());
int counter=b.getBasket().size();
System.out.println(counter);
addGolfBag.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

                Basket b = new Basket ();
                int productNumber = 0 ;
                String productName = null ;
                double productPrice = 0 ;
                String productType = "BAG";
                int quantity = 0;
                String colour = null;
                String size = null;

                if (((String) golfBagOptions.getSelectedItem())
                        .equals("TaylorMade Juggernaut Cart Bag")){ 

                    productNumber=b.getOrderNumber();
                    productName="TaylorMade Juggernaut";
                    productPrice=(129*(Integer)golfBagQuanititySpinner.getValue());
                    quantity=(Integer)golfBagQuanititySpinner.getValue();
                    colour="BLUE";
                    size="LARGE";
                }
                if (((String) golfBagOptions.getSelectedItem())
                        .equals("Mizuno Golf Rider Cart Bag")){ 

                    productNumber=b.getOrderNumber();
                    productName="Mizuno Golf Rider";
                    productPrice=(99.99*(Integer)golfBagQuanititySpinner.getValue());
                    quantity=(Integer)golfBagQuanititySpinner.getValue();
                    colour="BLACK";
                    size="SMALL";
                }
                if (((String) golfBagOptions.getSelectedItem())
                        .equals("Titleist RC13 Reverse Cart Bag")){ 

                    productNumber=b.getOrderNumber();
                    productName="Titleist RC13 Reverse";
                    productPrice=(99.99*(Integer)golfBagQuanititySpinner.getValue());
                    quantity=(Integer)golfBagQuanititySpinner.getValue();
                    colour="SILVER";
                    size="LARGE";
                }
                if (((String) golfBagOptions.getSelectedItem())
                        .equals("Callaway Golf Euro Chev Org Cart Bag")){ 

                    productNumber=b.getOrderNumber();
                    productName="Callaway Golf Euro";
                    productPrice=(79*(Integer)golfBagQuanititySpinner.getValue());
                    quantity=(Integer)golfBagQuanititySpinner.getValue();
                    colour="BLUE";
                    size="MEDIUM";
                }

                    GolfBags gb = new GolfBags(1,productType, productPrice, productName, quantity, colour, size);

                    b.getBasket().add(gb);
                    System.out.println(b.getBasket());
                    int counter=b.getBasket().size();
                    System.out.println(counter);


            }});
public void actionPerformed(ActionEvent e) {
    Basket b = new Basket ();