This is probably the nth time you've received a newbie question regarding calculators, but I just can't figure it out, been working on it for two to three days. The way I have built my calculator at the moment does not suffice and I know I have to start calculating at the time I press the '=' button, but I simply can't figure out how to do so. Due to this reason I have reverted back to my original calculator code, in which it calculates when I press an operation button (like '+') which didn't work, but I was hoping that that would allow me to properly build on it. Here's the code:

```
package rekenmachine;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import java.util.*;

public class Rekenmachine extends JFrame
{
    public static void main(String[] args)
    {
        JFrame frame = new JFrame();
        frame.setSize(300,500);
        frame.setLocation(800,400);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setTitle("Rekenmachine");
        RekenPaneel rekenpaneel = new RekenPaneel();
        frame.setContentPane(rekenpaneel);
        frame.setVisible(true);
    }

    private static int getal, totaalGetal;
    private boolean optellen, aftrekken, vermenigvuldigen, delen;

     public int Optellen(int getal)
    {
        reset();
        optellen = true;
        totaalGetal += getal;
        getal = 0;
        return totaalGetal;
    }
    public int Aftrekken(int getal)
    {
        reset();
        aftrekken = true;
        totaalGetal -= getal;
        getal = 0;
        return totaalGetal;
    }
    public int Delen(int getal)
    {
        reset();
        delen = true;
        totaalGetal /= getal;
        getal = 0;
        return totaalGetal;
    }
    public int Vermenigvuldigen(int getal)
    {
        reset();
        vermenigvuldigen = true;
        totaalGetal *= getal;
        getal = 0;
        return totaalGetal;
    }
    public int getGetal()
    {
        return getal;
    }
    public int getTotaalGetal()
    {
        return totaalGetal;
    }
    public void reset()
    {
        optellen = false;
        aftrekken = false;
        delen = false;
        vermenigvuldigen = false;

        getal = 0;
        totaalGetal = 0;
    }
}

class RekenPaneel extends JPanel
{
    JButton knop0, knop1, knop2, knop3, knop4, knop5, knop6, knop7, knop8, knop9,
            knopOptel, knopAftrek, knopVermenigvuldigen, knopDelen, knopUitkomst,
            knopWissen;
    JTextField invoerVak;
    JPanel textPaneel, knopPaneel, logoPaneel;
    Rekenmachine rekenmachine;

    public RekenPaneel()
    {
        rekenmachine = new Rekenmachine();

        setLayout(new BorderLayout());

        textPaneel = new JPanel();
        knopPaneel = new JPanel();
        logoPaneel = new JPanel();

        textPaneel.setLayout(new FlowLayout());
        knopPaneel.setLayout(new GridLayout(4,4));
        logoPaneel.setLayout(new FlowLayout());

        Border rand = BorderFactory.createEmptyBorder(10, 10, 10, 10);

        knop0 = new JButton("0");
        knop0.addActionListener(new knop0Handler());

        knop1 = new JButton("1");
        knop1.addActionListener(new knop1Handler());

        knop2 = new JButton("2");
        knop2.addActionListener(new knop2Handler());

        knop3 = new JButton("3");
        knop3.addActionListener(new knop3Handler());

        knop4 = new JButton("4");
        knop4.addActionListener(new knop4Handler());

        knop5 = new JButton("5");
        knop5.addActionListener(new knop5Handler());

        knop6 = new JButton("6");
        knop6.addActionListener(new knop6Handler());

        knop7 = new JButton("7");
        knop7.addActionListener(new knop7Handler());

        knop8 = new JButton("8");
        knop8.addActionListener(new knop8Handler());

        knop9 = new JButton("9");
        knop9.addActionListener(new knop9Handler());

        knopOptel = new JButton("+");
        knopOptel.addActionListener(new knopOptelHandler());

        knopAftrek = new JButton("-");
        knopAftrek.addActionListener(new knopAftrekHandler());

        knopVermenigvuldigen = new JButton("*");
        knopVermenigvuldigen.addActionListener(new knopVermenigvuldigenHandler());

        knopDelen = new JButton("/");
        knopDelen.addActionListener(new knopDelenHandler());

        knopUitkomst = new JButton("=");
        knopUitkomst.addActionListener(new knopUitkomstHandler());

        knopWissen = new JButton("C");
        knopWissen.addActionListener(new knopWissenHandler());

        invoerVak = new JTextField(25);
        invoerVak.setHorizontalAlignment(invoerVak.RIGHT);
        invoerVak.setEditable(false);
        invoerVak.setBackground(Color.WHITE);

        textPaneel.add(invoerVak);
        knopPaneel.add(knop7);
        knopPaneel.add(knop8);
        knopPaneel.add(knop9);
        knopPaneel.add(knopDelen);
        knopPaneel.add(knop4);
        knopPaneel.add(knop5);
        knopPaneel.add(knop6);
        knopPaneel.add(knopVermenigvuldigen);
        knopPaneel.add(knop1);
        knopPaneel.add(knop2);
        knopPaneel.add(knop3);
        knopPaneel.add(knopOptel);
        knopPaneel.add(knop0);
        knopPaneel.add(knopWissen);
        knopPaneel.add(knopUitkomst);
        knopPaneel.add(knopAftrek);

        add(textPaneel, BorderLayout.NORTH);
        add(knopPaneel, BorderLayout.CENTER);
        add(logoPaneel, BorderLayout.SOUTH);
    }
    class knop0Handler implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            invoerVak.setText(invoerVak.getText() + "0");
        }
    }
    class knop1Handler implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            invoerVak.setText(invoerVak.getText() + "1");
        }
    }
    class knop2Handler implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            invoerVak.setText(invoerVak.getText() + "2");
        }
    }
    class knop3Handler implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            invoerVak.setText(invoerVak.getText() + "3");
        }
    }
    class knop4Handler implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            invoerVak.setText(invoerVak.getText() + "4");
        }
    }
    class knop5Handler implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            invoerVak.setText(invoerVak.getText() + "5");
        }
    }
    class knop6Handler implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            invoerVak.setText(invoerVak.getText() + "6");
        }
    }
    class knop7Handler implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            invoerVak.setText(invoerVak.getText() + "7");
        }
    }
    class knop8Handler implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            invoerVak.setText(invoerVak.getText() + "8");
        }
    }
    class knop9Handler implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            invoerVak.setText(invoerVak.getText() + "9");
        }
    }
    class knopOptelHandler implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            String invoer = invoerVak.getText();
            int invoerGetal = Integer.parseInt(invoer);
            rekenmachine.Optellen(invoerGetal);
            invoerVak.setText("");

        }
    }
    class knopAftrekHandler implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            String invoer = invoerVak.getText();
            int invoerGetal = Integer.parseInt(invoer);
            rekenmachine.Aftrekken(invoerGetal);
            invoerVak.setText("");
        }
    }
    class knopVermenigvuldigenHandler implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            String invoer = invoerVak.getText();
            int invoerGetal = Integer.parseInt(invoer);
            rekenmachine.Vermenigvuldigen(invoerGetal);
            invoerVak.setText("");
        }
    }
    class knopDelenHandler implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            String invoer = invoerVak.getText();
            int invoerGetal = Integer.parseInt(invoer);
            rekenmachine.Delen(invoerGetal);
            invoerVak.setText("");
        }
    }
    class knopUitkomstHandler implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            invoerVak.setText("" + rekenmachine.getTotaalGetal());
            rekenmachine.reset();
        }
    }
    class knopWissenHandler implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            rekenmachine.reset();
            invoerVak.setText("");
        }
    }
}

```

What it basically does is look like a calculator, all buttons work, yet the way it calculates is way off, if at all. I think what I need to do is save a number, when I press + it should add the next number, if I press - it should substract the next number, if I press \* it should multiply by the next number and if I press / it should divide by the next number, then when I press = it should show the result, yet I have no idea how to do that.

Should it be done with an arraylist? If so, how could I properly save the result? I mean, using it with two numbers isn't that hard, you just save two numbers and do something with them, then show the result, but a person doesn't always use just two numbers.

To explain the problem I'm having more clearly: for example, when I enter '50' and then press '+' it SHOULD convert "50" to getal = 50 and start the Optellen method, then totaalGetal should become 50, it then empties the textfield. If I then add '3', it should say 53 when I press '=' yet it still shows 50 if I'm lucky. To solve that I assume I have to make the calculation WHEN I press '=' but I don't know how to save/calculate numbers before having done that.

Can anybody tell me what to do before I've lost all my hair? :P