0

I have created a text calculator that works fine; but I want the calculator to print out what the user is typing as he or she types it in my textfield t4. I know that I have to use ActionListener and have looked up how to use it but I still can't get it to work correctly. I have tried creating buttons 1-9 and adding ActionListeners to them to try printing it out real time, I tried adding different strings and .getText on the "public void actionPerformed(ActionEvent e)" part of the code but I still can't get it to work. `

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Calculator extends JFrame implements ActionListener
{
GridLayout layout = new GridLayout(7, 1);
JLabel l1 = new JLabel("Number 1:");
JLabel l2 = new JLabel("Number 2:");
JLabel l3 = new JLabel("Answer:"); 
JLabel l4 = new JLabel("Your input:");
JTextField t1 = new JTextField(30);
JTextField t2 = new JTextField(30);
JTextField t3 = new JTextField(30);
JTextField t4 = new JTextField(30);
JButton add = new JButton("+");
JButton sub = new JButton("-");
JButton mul = new JButton("*");
JButton div= new JButton("/");
JButton one = new JButton("1");
Float ans; 



public Calculator()
  {
    super("Calculator");
    setSize(250, 200);
    add(l1);
    add(t1);
    add(l2);
    add(t2);
    add(l3);
    add(t3);
    add(l4);
    add(t4);
    add(add);
    add(sub);
    add(mul);
    add(div);
    add(one);
    setLayout(layout);
    add.addActionListener(this);
    sub.addActionListener(this);
    mul.addActionListener(this);
    div.addActionListener(this);
    setVisible(true);
  }

public void actionPerformed(ActionEvent e)
  {
String n1 = t1.getText();
String n2 = t2.getText();
Float num1 = Float.parseFloat(n1);
Float num2 = Float.parseFloat(n2); 
Object clicked = e.getSource();


if(add == clicked)
{
  t3.setText(String.valueOf(num1+num2));
  t4.setText(String.valueOf(num1 + "+" + num2 + "=" + (num1+num2)));
}

else if(sub == clicked)
{
  t3.setText(String.valueOf(num1-num2));
  t4.setText(String.valueOf(num1 + "-" + num2 + "=" + (num1-num2)));
}

else if(mul == clicked)
{
  t3.setText(String.valueOf(num1*num2));
  t4.setText(String.valueOf(num1 + "*" + num2 + "=" + (num1*num2)));
}

else
{
if(num2 == 0)
t3.setText("Can't Divide By Zero");
else
t3.setText(String.valueOf(num1/num2));
t4.setText(String.valueOf(num1 + "/" + num2 + "=" + (num1/num2)));
  }
 }
}


public class UseMyFrame
{
  public static void main(String[] args)
  {
    Calculator calc = new Calculator();
    calc.setVisible(true);
  }
}
    `.
Andy
  • 11
  • http://stackoverflow.com/questions/20129166/jpanel-action-listener – Naruto Sep 24 '16 at 16:21
  • To get input from a JTextField as it's being typed use a DocumentListener that is added to the field's Document, not an ActionListener. – Hovercraft Full Of Eels Sep 24 '16 at 16:39
  • I tried adding the document listener but I keep getting an error asking me to change addDocumentListener to removeDocumentListener and that still gives me an error – Andy Sep 24 '16 at 18:29

0 Answers0