Towards the end of my code I write if commands using getActionCommand to see what button the user presses. I want to make it so that whatever the user presses will be added to the textbox so they can see what they are entering. For some reason whatever number I press first seems to show up for all the rest of the numbers thereafter. How can I fix this?
//Michael Moradi
//Period C1
//June 2, 2015
//Final Project Semester 2
import javax.swing.*; //imports all that is needed for the code
import java.awt.*;
import java.awt.event.*;
public class Calculator extends JFrame implements ActionListener {
public JButton button1, button2, button3, button4, button5, button6, button7,
button8, button9, button10, button11, button12, button13, button14,
button15, button16;
public JTextArea text;
public Calculator()
{
setSize(350,300); //sets size to 300 by 300 //LOOK UP HOW TO LOCK SIZE
setResizable(false); //does not let user change the size of the window
setDefaultCloseOperation(EXIT_ON_CLOSE);//makes app close when I press the x on the top left
Container contentPane = getContentPane();//gets the contentPane
contentPane.setBackground(Color.CYAN);//sets background color to white
contentPane.setLayout(new FlowLayout());//makes the contentPane read from left to right
text = new JTextArea(1, 25);
contentPane.add(text);
text.setEditable(false);
button1 = new JButton ("7");
contentPane.add(button1);
button1.addActionListener(this);
button2 = new JButton ("8");
contentPane.add(button2);
button2.addActionListener(this);
button3 = new JButton ("9");
contentPane.add(button3);
button3.addActionListener(this);
button4 = new JButton ("÷");
contentPane.add(button4);
button4.addActionListener(this);
button5 = new JButton ("4");
contentPane.add(button5);
button5.addActionListener(this);
button6 = new JButton ("5");
contentPane.add(button6);
button6.addActionListener(this);
button7 = new JButton ("6");
contentPane.add(button7);
button7.addActionListener(this);
button8 = new JButton ("x");
contentPane.add(button8);
button8.addActionListener(this);
button9 = new JButton ("1");
contentPane.add(button9);
button9.addActionListener(this);
button10 = new JButton ("2");
contentPane.add(button10);
button10.addActionListener(this);
button11 = new JButton ("3");
contentPane.add(button11);
button11.addActionListener(this);
button12 = new JButton ("-");
contentPane.add(button12);
button12.addActionListener(this);
button13 = new JButton ("0");
contentPane.add(button13);
button13.addActionListener(this);
button14 = new JButton (".");
contentPane.add(button14);
button14.addActionListener(this);
button15 = new JButton ("=");
contentPane.add(button15);
button15.addActionListener(this);
button16 = new JButton ("+");
contentPane.add(button16);
button16.addActionListener(this);
}
public static void main(String[] args)
{
Calculator guiWindow = new Calculator(); //uses GUI
guiWindow.setVisible(true); //makes it visible
}
public void actionPerformed(ActionEvent e)
{
Container contentPane = getContentPane();
String enteredNumbers = text.getText();
if (e.getActionCommand().equals("7"));
text.setText(enteredNumbers + ("7"));
if (e.getActionCommand().equals("8"));
text.setText(enteredNumbers + ("8"));
if (e.getActionCommand().equals("9"));
text.setText(enteredNumbers + ("9"));
if (e.getActionCommand().equals("÷"));
text.setText(enteredNumbers + ("÷"));
if (e.getActionCommand().equals("4"));
text.setText(enteredNumbers + ("4"));
if (e.getActionCommand().equals("5"));
text.setText(enteredNumbers + ("5"));
if (e.getActionCommand().equals("6"));
text.setText(enteredNumbers + ("6"));
if (e.getActionCommand().equals("x"));
text.setText(enteredNumbers + ("x"));
if (e.getActionCommand().equals("1"));
text.setText(enteredNumbers + ("1"));
if (e.getActionCommand().equals("2"));
text.setText(enteredNumbers + ("2"));
if (e.getActionCommand().equals("3"));
text.setText(enteredNumbers + ("3"));
if (e.getActionCommand().equals("-"));
text.setText(enteredNumbers + ("-"));
if (e.getActionCommand().equals("0"));
text.setText(enteredNumbers + ("0"));
if (e.getActionCommand().equals("."));
text.setText(enteredNumbers + ("."));
if (e.getActionCommand().equals("="));
text.setText(enteredNumbers + ("="));
if (e.getActionCommand().equals("+"));
text.setText(enteredNumbers + ("+"));
}
}
You have semicolons directly after each if-statement. This semicolon is an empty statement, cause an if statement needn't a semicolon at the end. An empty statement (just a semicolon) just does nothing and completes normaly without error.
Now an empty statement at the end of an if statement means, that if the expression of the if statement evaluates to true, nothing will be done and the next statement is executed whether or not the if statement returns true.
So instead of
if (e.getActionCommand().equals("7"));
text.setText(enteredNumbers + ("7"));
use this
if (e.getActionCommand().equals("7"))
text.setText(enteredNumbers + ("7"));