Как создать и сохранить новый объект другого типа в определенном списке Array из набора методов? - PullRequest
1 голос
/ 16 апреля 2019

Я работаю над созданием графического интерфейса для магазина гаджетов, в котором хранятся сведения о гаджетах, таких как мобильные телефоны и MP3-плееры, но я не знаю, как вернуть и сохранить значения этих деталей в виде нового объекта такого типа вArrayList типа Gadget.

Я провел много проб и ошибок, но не мог быть уверен в том, действительно ли я добился какого-либо прогресса или нет.

import java.util.ArrayList;
import java.awt.event.*;
import javax.swing.*;
public class GadgetShop implements ActionListener
{
    // instance variables - replace the example below with your own
    private JTextField modelTextField;
    private JTextField priceTextField;
    private JTextField weightTextField;
    private JTextField sizeTextField;
    private JTextField initialCreditTextField;
    private JButton addMobileButton;
    private JFrame frame;
    private ArrayList<Gadget> gadgets;

    /**
     * The GUI is created in the constructor.
     */
    public GadgetShop()
    {
        // initialise instance variables

        ArrayList<Gadget> gadgets = new ArrayList<Gadget>();

        frame = new JFrame("The Gadget Shop");
        Container contentPane = frame.getContentPane();
        contentPane.setLayout(new FlowLayout());

        modelTextField = new JTextField(15);
        contentPane.add(modelTextField);

        priceTextField = new JTextField(15);
        contentPane.add(priceTextField);

        weightTextField = new JTextField(15);
        contentPane.add(weightTextField);

        sizeTextField = new JTextField(15);
        contentPane.add(sizeTextField);

        initialCreditTextField = new JTextField(15);
        contentPane.add(initialCreditTextField);

        addMobileButton = new JButton("Add Mobile");
        contentPane.add(addMobileButton);
        addMobileButton.addActionListener(this);

        frame.pack();
        frame.setVisible(true);
    }

    /**
     * The main method allows the program to be run without BlueJ.
     */ 
    public static void main(String[] args)
    {
        GadgetShop calculator = new GadgetShop();
    }

    /**
     * Find which button triggered the event and call the appropriate method.
     */
    public void actionPerformed(ActionEvent event)
    {
        String command = event.getActionCommand();
        if (command.equals("Add Mobile")) {
            addMobile();
        }
    }

Ниже приведены getMethodsподробности об объекте

    public String getModel()
    {
        String model
           = modelTextField.getText();
        return model;
    }

    public String getSize()
    {
        String size
           = sizeTextField.getText();
        return size;
    }

    public int getWeight()
    {
        int weight
           = Integer.parseInt(weightTextField.getText());
        return weight;
    }

    public double getPrice()
    {
        double price
           = Double.parseDouble(priceTextField.getText());
        return price;
    }

    public int getCredit()
    {
        int credit
           = Integer.parseInt(initialCreditTextField.getText());
        return credit;
    }

Ниже приведен мой setMethod для хранения объекта типа Mobile в ArrayList гаджета, который, по моему мнению, неверен

    public void addMobile()
    {
        String mobile =
           getModel();    //Is this how I call the get Methods??
           getPrice();
           getWeight();
           getSize();
           getCredit();
        gadgets = new Mobile();
        gadgets.add(mobile);   //I get an error with the .add part
    }

}

Я ожидал ошибок, потому что былне уверен, правильно ли я создал ArrayList.

...