Java 由于某些原因,它不会添加到arrayList

Java 由于某些原因,它不会添加到arrayList,java,arraylist,Java,Arraylist,我有一个奇怪的东西,我试图添加到ArrayList,但它没有添加,它得到了值和所有内容。请核对密码,然后给我打电话 我试图添加的类: public class ManualProductGUI extends JDialog { private final JPanel contentPanel = new JPanel(); private JTextField barcodeField; private JTextField idField; private JTextField name

我有一个奇怪的东西,我试图添加到ArrayList,但它没有添加,它得到了值和所有内容。请核对密码,然后给我打电话

我试图添加的类:

public class ManualProductGUI extends JDialog {

private final JPanel contentPanel = new JPanel();
private JTextField barcodeField;
private JTextField idField;
private JTextField nameField;
private JTextField priceField;
private JTextField quantityField;
private JTextField infoField;

BasketContainer bc = new BasketContainer();

private static final long serialVersionUID = 1L;

/**
 * Launch the application.
 */
public static void main(String[] args) {
    try {
        ManualProductGUI dialog = new ManualProductGUI();
        dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
        dialog.setVisible(true);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

/**
 * Create the dialog.
 */
public ManualProductGUI() {
    setTitle("Product search");
    setBounds(100, 100, 450, 300);
    getContentPane().setLayout(new BorderLayout());
    contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
    getContentPane().add(contentPanel, BorderLayout.CENTER);
    contentPanel.setLayout(null);


    barcodeField = new JTextField();
    barcodeField.setText("Enter barcode");
    barcodeField.setBounds(10, 11, 157, 20);
    contentPanel.add(barcodeField);
    barcodeField.setColumns(10);
    barcodeField.addMouseListener(new MouseAdapter() 
    {
        public void mouseClicked(MouseEvent e)
        {
            barcodeField.setText("");
        }
    });

    barcodeField.addActionListener(new ActionListener()
    {
        public void actionPerformed(ActionEvent e)
        {
            int barcode = Integer.parseInt(barcodeField.getText());
            ProductCtr prodCtr = new ProductCtr();

            Product prod = prodCtr.searchProductByBarcode(barcode);
            buildFields(prod);
        }
    });

    infoField = new JTextField();
    infoField.setEditable(false);
    infoField.setBounds(177, 133, 86, 20);
    contentPanel.add(infoField);
    infoField.setColumns(10);
    {
        JPanel buttonPane = new JPanel();
        buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
        getContentPane().add(buttonPane, BorderLayout.SOUTH);
        {
            JButton okButton = new JButton("Add");
            okButton.setActionCommand("Add");
            buttonPane.add(okButton);
            okButton.addActionListener(new ActionListener()
            {
                public void actionPerformed(ActionEvent e)
                {
                    addToBasket();
                    setVisible(false);
                    dispose();
                }
            });
            getRootPane().setDefaultButton(okButton);
        }
        {
            JButton cancelButton = new JButton("Cancel");
            cancelButton.setActionCommand("Cancel");
            cancelButton.addActionListener(new ActionListener()
            {
                public void actionPerformed(ActionEvent e)
                {
                    setVisible(false);
                    dispose();
                }
            });
            buttonPane.add(cancelButton);
        }
    }
}

private void addToBasket()
{
    int barcode = Integer.parseInt(barcodeField.getText());
    ProductCtr prodCtr = new ProductCtr();

    Product prod = prodCtr.searchProductByBarcode(barcode);

    bc.addProduct(prod);
}
}

以下是容器类的一部分:

private ArrayList<Product> listOfItems;
public BasketContainer()
{
    listOfItems = new ArrayList<>();
}

public void addProduct(Product prod)
{
    listOfItems.add(prod);
}
public ArrayList<Product> getProducts()
{
    return listOfItems;
}
私有数组列表项;
公共篮子容器()
{
listOfItems=newarraylist();
}
公共产品(产品生产)
{
项目列表。添加(产品);
}
公共阵列列表getProducts()
{
返回项目列表;
}
它会在屏幕上打印出信息,但不会添加。我错过什么了吗


谢谢。

您每次都会创建一个新的
BasketContainer
实例,这样新实例就会有一个新的清晰的ArrayList


要修复它,您应该在某个地方创建
BasketContainer
实例(可能在init块中?)并保存引用,然后使用它添加元素。

您正在方法范围内创建一个新的
BasketContainer

BasketContainer bc = new BasketContainer();
bc.addProduct(prod);

addToBasket
方法应该在它所在类的字段上调用
addProduct

您也需要将泛型类型添加到ListoItems的实例化中
ListoItems=new ArrayList()
谢谢您的回答,但是我完全按照您所说的做了,我将
BasketContainer
放在一个Init块中,但这并没有解决我的问题。也许你可以再多提些建议?谢谢。您能添加更改后的代码吗?还有,addToBasket方法在哪里?我编辑了我的帖子,添加了整个班级。通知你,因为我不知道当我的帖子被编辑时它是否会通知你。你是如何阅读列表的?在哪里?我在你的代码中没有看到它。从容器类(我编辑并添加了如何读取它的方法)。很抱歉一开始没有说得那么具体。