Pizza Order Form: add calculate button

the code below works fine but instead of an automatic refresh of the price, I want to add a calculate button the price is updated when the button is selected.  any ideas?

import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.text.*;
import javax.swing.*;

public class PizzaOrder extends JFrame implements ActionListener, KeyListener {
        double smallPizzaPrice = 6.99, mediumPizzaPrice = 8.99,
                        largePizzaPrice = 10.99, elargePizzaPrice = 16.00;
        double vegtop1 = 0.25, vegtop2 = 0.25, vegtop3 = 0.25, vegtop4 = 0.25,
                        vegtop5 = 0.25, vegtop6 = 0.25, vegtop7 = 0.25, vegtop8 = 0.25,
                        vegtop9 = 0.25;
        double meattop1 = 0.50, meattop2 = 0.50, meattop3 = 0.50, meattop4 = 0.50,
                        meattop5 = 0.50, meattop6 = 0.50, meattop7 = 0.50, meattop8 = 0.50,
                        meattop9 = 0.50;

        JLabel lab1, lab2, lab3, lab4, lab5, vegtopLabel, meattopLabel, lab6, lab7;
        Button button;
        JTextField text1, text2, text3, text4;
        ButtonGroup group;
        JRadioButton small, medium, large, elarge;
        JCheckBox chk1, chk2, chk3, chk4, chk5, chk6, chk7, chk8, chk9, chk10,
                        chk11, chk12, chk13, chk14, chk15, chk16, chk17, chk18;

        PizzaOrder() {
                getContentPane().setLayout(null);
                setBackground(Color.white);
                lab1 = new JLabel("Name: ");
                lab2 = new JLabel("Address: ");
                lab3 = new JLabel("Contact No: ");
                lab4 = new JLabel("Quantity: ");
                lab5 = new JLabel("Select the size of the pizza(s):");
                lab5.setForeground(new Color(0, 0, 205));
                lab5.setFont(new Font("Arial", Font.BOLD, 14));

                vegtopLabel = new JLabel("Select Veg Toppings : ");
                vegtopLabel.setForeground(new Color(0, 0, 205));
                vegtopLabel.setFont(new Font("Arial", Font.BOLD, 14));

                meattopLabel = new JLabel("Select Meat Toppings : ");
                meattopLabel.setForeground(new Color(0, 0, 205));
                meattopLabel.setFont(new Font("Arial", Font.BOLD, 14));

                lab6 = new JLabel("Total price: ");
                lab6.setForeground(new Color(200, 0, 0));
                lab6.setFont(new Font("Arial", Font.BOLD, 14));

                lab7 = new JLabel("$0.00");
                lab7.setForeground(new Color(235, 0, 0));

                text1 = new JTextField(20);
                text2 = new JTextField(20);
                text3 = new JTextField(20);
                text4 = new JTextField(20);
                text4.setText("0");

                small = new JRadioButton("Small", true);
                medium = new JRadioButton("Medium", false);
                large = new JRadioButton("Large", false);
                elarge = new JRadioButton("Extra Large", false);
                group = new ButtonGroup();
                group.add(small);
                group.add(medium);
                group.add(large);
                group.add(elarge);

                chk1 = new JCheckBox("Baby Portabella Mushrooms", false);
                chk2 = new JCheckBox("Fresh-Sliced Roma Tomatoes", false);
                chk3 = new JCheckBox("Black Olives", false);
                chk4 = new JCheckBox("Sweet Pineapple", false);
                chk5 = new JCheckBox("Banana Peppers", false);
                chk6 = new JCheckBox("Jalapeño Peppers", false);
                chk7 = new JCheckBox("Extra Cheese", true);
                chk8 = new JCheckBox("Fresh-Sliced Onions", false);
                chk9 = new JCheckBox("Fresh-Sliced Green Peppers ", false);

                chk10 = new JCheckBox("Pepperoni", false);
                chk11 = new JCheckBox("Sausage", false);
                chk12 = new JCheckBox("Spicy Italian Sausage", false);
                chk13 = new JCheckBox("Ham", false);
                chk14 = new JCheckBox("Grilled All-White Chicken", false);
                chk15 = new JCheckBox("Turkey", false);
                chk16 = new JCheckBox("Beef", false);
                chk17 = new JCheckBox("Salami", false);
                chk18 = new JCheckBox("Hickory-Smoked Bacon", false);

                button = new Button("Exit");
                small.addActionListener(this);
                medium.addActionListener(this);
                large.addActionListener(this);
                elarge.addActionListener(this);

                chk1.addActionListener(this);
                chk2.addActionListener(this);
                chk3.addActionListener(this);
                chk4.addActionListener(this);
                chk5.addActionListener(this);
                chk6.addActionListener(this);
                chk7.addActionListener(this);
                chk8.addActionListener(this);
                chk9.addActionListener(this);

                chk10.addActionListener(this);
                chk11.addActionListener(this);
                chk12.addActionListener(this);
                chk13.addActionListener(this);
                chk14.addActionListener(this);
                chk15.addActionListener(this);
                chk16.addActionListener(this);
                chk17.addActionListener(this);
                chk18.addActionListener(this);

                text4.addKeyListener(this);
                button.addActionListener(this);

                lab1.setBounds(50, 50, 200, 20);
                lab2.setBounds(50, 80, 200, 20);
                lab3.setBounds(50, 110, 200, 20);
                lab4.setBounds(50, 140, 200, 20);

                text1.setBounds(200, 50, 200, 20);
                text2.setBounds(200, 80, 200, 20);
                text3.setBounds(200, 110, 200, 20);
                text4.setBounds(200, 140, 200, 20);

                lab5.setBounds(50, 170, 500, 20);
                small.setBounds(300, 170, 100, 20);
                medium.setBounds(400, 170, 100, 20);
                large.setBounds(500, 170, 100, 20);
                elarge.setBounds(600, 170, 100, 20);

                vegtopLabel.setBounds(50, 200, 300, 20);
                chk1.setBounds(50, 230, 300, 20);
                chk2.setBounds(50, 260, 300, 20);
                chk3.setBounds(50, 290, 300, 20);
                chk4.setBounds(50, 320, 300, 20);
                chk5.setBounds(50, 350, 300, 20);
                chk6.setBounds(50, 380, 300, 20);
                chk7.setBounds(50, 410, 300, 20);
                chk8.setBounds(50, 440, 300, 20);
                chk9.setBounds(50, 470, 300, 20);

                meattopLabel.setBounds(500, 200, 300, 20);
                chk10.setBounds(500, 230, 300, 20);
                chk11.setBounds(500, 260, 300, 20);
                chk12.setBounds(500, 290, 300, 20);
                chk13.setBounds(500, 320, 300, 20);
                chk14.setBounds(500, 350, 300, 20);
                chk15.setBounds(500, 380, 300, 20);
                chk16.setBounds(500, 410, 300, 20);
                chk17.setBounds(500, 440, 300, 20);
                chk18.setBounds(500, 470, 300, 20);
                lab6.setBounds(50, 550, 500, 40);
                lab7.setBounds(200, 550, 500, 40);

                button.setBounds(50, 600, 100, 20);
                add(lab1);
                add(lab2);
                add(lab3);
                add(lab4);
                add(text1);
                add(text2);
                add(text3);
                add(text4);
                add(lab5);
                add(small);
                add(medium);
                add(large);
                add(elarge);
                add(vegtopLabel);
                add(chk1);
                add(chk2);
                add(chk3);
                add(chk4);
                add(chk5);
                add(chk6);
                add(chk7);
                add(chk8);
                add(chk9);
                add(meattopLabel);
                add(chk10);
                add(chk11);
                add(chk12);
                add(chk13);
                add(chk14);
                add(chk15);
                add(chk16);
                add(chk17);
                add(chk18);
                add(lab6);
                add(lab7);
                add(button);
                text4.selectAll();
                setVisible(true);
                setSize(1000, 700);
        }

        public void keyTyped(KeyEvent e) {
        }

        public void keyPressed(KeyEvent e) {
        }

        public void keyReleased(KeyEvent e) {

                try {
                        Integer.parseInt(text4.getText());
                } catch (NumberFormatException fe) {
                        text4.setText("0");
                }

                refreshPrice();
        }

        public void actionPerformed(ActionEvent e) {
                if (e.getSource() == button) {
                        JOptionPane.showMessageDialog(this, text1.getText() + ", Thank you"
                                        + "\n\nYour pizza will be delivered in a few minutes. ",
                                        "Orders Confirmed", JOptionPane.INFORMATION_MESSAGE);
                }
                refreshPrice();
        }

        private void refreshPrice() {
                double price = 0;
                int pizzaAmount = Integer.parseInt(text4.getText());

                NumberFormat numberForm = NumberFormat.getNumberInstance();
                DecimalFormat moneyForm = (DecimalFormat) numberForm;
                moneyForm.applyPattern("0.00");

                if (small.isSelected()) {
                        price += smallPizzaPrice * pizzaAmount;
                }
                if (medium.isSelected()) {
                        price += mediumPizzaPrice * pizzaAmount;
                }
                if (large.isSelected()) {
                        price += largePizzaPrice * pizzaAmount;
                }
                if (elarge.isSelected()) {
                        price += elargePizzaPrice * pizzaAmount;
                }
                if (chk1.isSelected()) {
                        price += vegtop1 * pizzaAmount;
                }
                if (chk2.isSelected()) {
                        price += vegtop2 * pizzaAmount;
                }
                if (chk3.isSelected()) {
                        price += vegtop3 * pizzaAmount;
                }
                if (chk4.isSelected()) {
                        price += vegtop4 * pizzaAmount;
                }
                if (chk5.isSelected()) {
                        price += vegtop5 * pizzaAmount;
                }
                if (chk6.isSelected()) {
                        price += vegtop6 * pizzaAmount;
                }
                if (chk7.isSelected()) {
                        price += vegtop7 * pizzaAmount;
                }
                if (chk8.isSelected()) {
                        price += vegtop8 * pizzaAmount;
                }
                if (chk9.isSelected()) {
                        price += vegtop9 * pizzaAmount;
                }
                if (chk10.isSelected()) {
                        price += meattop1 * pizzaAmount;
                }
                if (chk11.isSelected()) {
                        price += meattop2 * pizzaAmount;
                }
                if (chk12.isSelected()) {
                        price += meattop3 * pizzaAmount;
                }
                if (chk13.isSelected()) {
                        price += meattop4 * pizzaAmount;
                }
                if (chk14.isSelected()) {
                        price += meattop5 * pizzaAmount;
                }
                if (chk15.isSelected()) {
                        price += meattop6 * pizzaAmount;
                }
                if (chk16.isSelected()) {
                        price += meattop7 * pizzaAmount;
                }
                if (chk17.isSelected()) {
                        price += meattop8 * pizzaAmount;
                }
                if (chk18.isSelected()) {
                        price += meattop9 * pizzaAmount;
                }
                double value = price * 0.0775;
                double totalPrice = value + price;
                lab7.setText("$" + moneyForm.format(totalPrice)
                                + " along with the tax of $ " + value);
        }

        public static void main(String[] args) {
                PizzaOrder order = new PizzaOrder();
        }
}
edthatcherAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Mick BarryJava DeveloperCommented:
call refreshPrice() from your actionlistener of your new betton
and don't call it (refreshprice) from your key listener

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Java

From novice to tech pro — start learning today.