У меня есть школьное задание, в котором я должен создать java GUI и добавить пиццу в список массивов. Список массивов находится в отдельном Order
классе. Я впервые использую GUI в Java, поэтому я все еще пытаюсь разобраться.
Проблема в том, что если я инициализирую класс заказа во время события нажатия кнопки, каждый раз, когда я нажимаю кнопку «добавить пиццу в заказ», он воссоздает класс заказа и список массивов и запускается заново. Если я инициализирую класс порядка вне события нажатия кнопки, он не распознается в методе события нажатия.
Я также безуспешно пытался инициализировать класс в методе main. Я опубликую основной метод класса ниже. Имейте в виду, что есть также класс Order
и класс Pizza
.
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
// Creating the FirstGUI class to hold the main method and GUI code
public class FirstGUI extends JFrame implements ActionListener {
// Labels to give directions to the customer
public JLabel labelSelectPizzaSize = new JLabel("Please Select a Size for Your Pizza: [S]mall, [M]edium, or [L]arge");
public JLabel labelSelectPizzaCrust = new JLabel("Please Select a Crust Type: [Thick] or [Thin]");
public JLabel labelHasPepperoni = new JLabel("Do You Want Pepperoni? [Y]es or [N]o");
public JLabel labelTotalBakeTime = new JLabel("Total Bake Time: ");
public JLabel labelOrderTotal = new JLabel("Order Total: ");
// Text boxes for customer input
public JTextField textEnterPizzaSize = new JTextField(5);
public JTextField textEnterPizzaCrust = new JTextField(5);
public JTextField textHasPepperoni = new JTextField(5);
// Button to add pizza to order
public JButton buttonAddPizzaToOrder = new JButton("Add Pizza to Order");
// Main method
public static void main(String[] args) {
// Creating a new class instance
new FirstGUI();
}
FirstGUI() {
// Setting visibility to true
this.setVisible(true);
// Setting the default close operation
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Creating panels
JPanel panelMain = new JPanel();
JPanel panelPizzaSize = new JPanel();
JPanel panelPizzaCrust = new JPanel();
JPanel panelPizzaTopping = new JPanel();
JPanel panelButtons = new JPanel();
JPanel panelOrderInfo = new JPanel();
// Setting the layout for the ain panel
panelMain.setLayout(new BoxLayout(panelMain, BoxLayout.Y_AXIS));
// Adding ActionListner to the "Add Pizza To Order" button.
buttonAddPizzaToOrder.addActionListener(this);
// Adding labels, text fields, and buttons to the panels and then adding panels to the main panel.
panelPizzaSize.add(labelSelectPizzaSize);
panelPizzaSize.add(textEnterPizzaSize);
panelPizzaCrust.add(labelSelectPizzaCrust);
panelPizzaCrust.add(textEnterPizzaCrust);
panelPizzaTopping.add(labelHasPepperoni);
panelPizzaTopping.add(textHasPepperoni);
panelButtons.add(buttonAddPizzaToOrder);
panelMain.add(panelPizzaSize);
panelMain.add(panelPizzaCrust);
panelMain.add(panelPizzaTopping);
panelMain.add(panelButtons);
panelOrderInfo.add(labelTotalBakeTime);
panelOrderInfo.add(labelOrderTotal);
panelMain.add(panelOrderInfo);
// I'm not sure what this does.
this.getContentPane().add(panelMain);
// Setting size of the main panel.
this.setSize(475, 250);
}
// Method to create a pizza and add it to the array list when the "Add Pizza To Order" button is pressed.
public void actionPerformed(ActionEvent event1) {
try {
String a;
String b;
String c;
a = textEnterPizzaSize.getText().toUpperCase();
b = textEnterPizzaCrust.getText().toUpperCase();
c = textHasPepperoni.getText().toUpperCase();
Order O = new Order();
O.addPizza(new Pizza(a, b, c));
labelTotalBakeTime.setText("Total Bake Time: " + Double.toString(O.calculateBakeTime()));
labelOrderTotal.setText("- Order Total: " + Double.toString(O.calculateCost()));
// Conformation message when a pizza is added to the order.
JOptionPane.showMessageDialog(null, "Size: " + a + ", Crust: " + b + ", Pepperoni: " + c,
"Pizza Successfully Added To Order", JOptionPane.INFORMATION_MESSAGE);
}
// Exception and ERROR message handling
catch (MyException me) {
JOptionPane.showMessageDialog(null, me, "ERROR", JOptionPane.ERROR_MESSAGE);
}
}
}