//Cake shop inventory management using java swing

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class inventoryDEMO extends JFrame {
    private JCheckBox chkCho;
    private JCheckBox chkCup;
    private JCheckBox chkRed;
    private JTextField txtCupQty;
    private JTextField txtCQty;
    private JTextField txtRQty;
    private JTable jTable1;
    private JTextField txtBill;
    private JButton addButton;
    private JPanel panelMain;
    private DefaultTableModel model;
    public inventoryDEMO() {
        createTable();
        addButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                jButtonActionPerformed(e);
            }
        });
    }
    private void createTable() {
        jTable1.setModel(new DefaultTableModel(
                null,
                new String[]{"Item", "Price", "Qty", "Total"}
        ));
    }
    private void jButtonActionPerformed(ActionEvent evt) {
        try {
            int sum = 0;

            if (chkCho.isSelected()) {
                String cho = "Chocolate cake";
                int price = 1000;
                int qty = Integer.parseInt(txtCQty.getText());
                int tot = price * qty;
                model = (DefaultTableModel) jTable1.getModel();
                model.addRow(new Object[]{
                        cho,
                        price,
                        qty,
                        tot
                });
            }
            if (chkCup.isSelected()) {
                String red = "Red velvet cake";
                int price = 800;
                int qty = Integer.parseInt(txtRQty.getText());
                int tot = price * qty;
                model = (DefaultTableModel) jTable1.getModel();
                model.addRow(new Object[]{
                        red,
                        price,
                        qty,
                        tot
                });
            }
            if (chkRed.isSelected()) {
                String cup = "Cupcake";
                int price = 500;
                int qty = Integer.parseInt(txtCupQty.getText());
                int tot = price * qty;
                model = (DefaultTableModel) jTable1.getModel();
                model.addRow(new Object[]{
                        cup,
                        price,
                        qty,
                        tot
                });
            }
            for (int i = 0; i < jTable1.getRowCount(); i++) {
                sum = sum + Integer.parseInt(jTable1.getValueAt(i, 3).toString());
            }
            txtBill.setText(Integer.toString(sum));
        } catch (NumberFormatException ex) {
            JOptionPane.showMessageDialog(this, "Invalid quantity input.", "Error", JOptionPane.ERROR_MESSAGE);
        }
    }
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                inventoryDEMO d = new inventoryDEMO();
                JFrame frame = new JFrame();
                frame.setContentPane(d.panelMain);
                frame.setSize(700, 400);
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setVisible(true);
                frame.pack();
                frame.setLocationRelativeTo(null);
            }
        });
    }
}