-2
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.math.*;

public class Math5 extends JFrame implements ActionListener {
  JFrame frame;
  Container myPane;
  JLabel aDisplay, bDisplay, cDisplay, ansDisplay; // label
  JTextField aText, bText, cText, ansText; // input
  JButton calculate; // calculate button
  JPanel panel0, panel1, panel2, panel3;
  public double aValue, bValue, cValue, negativeB, bSquared, fourAC, twoA, result1, result2;

  public Math5() {
    frame = new JFrame("My Quadratic Equation");
    myPane = frame.getContentPane();

    calculate = new JButton("Calculate"); // display calculate button
    calculate.addActionListener(this);

    panel0 = new JPanel();
    panel1 = new JPanel();
    panel2 = new JPanel();
  }

  // calculate.addActionListener(new buttonListener());

  public void launchFrame() {

    GridLayout ly0 = new GridLayout(1, 3);
    panel0.setLayout(ly0);

    GridLayout ly1 = new GridLayout(1, 3);
    panel1.setLayout(ly1);

    GridLayout ly2 = new GridLayout(1, 3);
    panel2.setLayout(ly2);

    panel0.add(new JLabel("A :"));
    panel0.add(new JTextField(3));
    panel0.add(new JLabel("B :"));
    panel0.add(new JTextField(3));
    panel0.add(new JLabel("C :"));
    panel0.add(new JTextField(3));

    panel1.add(new JLabel("Answer "));
    panel1.add(new JTextField(3));
    panel2.add(calculate);

    GridLayout mylayout = new GridLayout(3, 1);
    myPane.setLayout(mylayout);

    myPane.add(panel0);
    myPane.add(panel1);
    myPane.add(panel2);

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setVisible(true);
  }

  public void actionPerformed(ActionEvent calc) {
    if (calc.equals(calculate)) {

      aValue = Integer.parseInt(aText.getText());
      bValue = Integer.parseInt(bText.getText());
      cValue = Integer.parseInt(cText.getText());

      negativeB = bValue - (2 * bValue); // -b
      bSquared = bValue * bValue; // b^2
      fourAC = 4 * aValue * cValue; // 4ac
      twoA = 2 * aValue; // 2a

      result1 = negativeB + (Math.sqrt(bSquared - fourAC)) / twoA;
      result2 = negativeB - (Math.sqrt(bSquared - fourAC)) / twoA;

      ansText.setText(Double.toString(result1));
      ansText.setText(Double.toString(result2));
      /*
       * add (resultDisplay1); add (resultDisplay2); resultDisplay1 = new JLabel("Result 1 : ",); //display result1 resultDisplay2 = new JLabel("Result 2 : ", ); //display result2
       */
    }
  }

  public static void main(String[] args) {
    Math5 Welcome = new Math5();
    Welcome.launchFrame();
    // frame.getContentPane().add(new QuadraticFormula());
  }
}

The code itself is working but cannot display the answer in the textfield because of the Actionlistener button.

Why the calculate.addActionListener(this); does not work? Can you explain briefly more on this ?

Jonathan Drapeau
  • 2,610
  • 2
  • 26
  • 32

1 Answers1

1

In if (calc.equals(calculate)){, calc is of type ActionEvent and calculate is of type JButton. They can't be equal.

EDIT With @FastSnail's proposed solutions:

calc.getSource().equals(calculate) or calc.getSource()==calculate

EDIT Full fix

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

public class Math5 extends JFrame implements ActionListener {
    JFrame frame;
    Container myPane;
    JLabel aDisplay, bDisplay, cDisplay, ansDisplay; // label
    JTextField aText, bText, cText, ansText; // input
    JButton calculate; // calculate button
    JPanel panel0, panel1, panel2, panel3;
    public double aValue, bValue, cValue, negativeB, bSquared, fourAC, twoA, result1, result2;

    public Math5() {
        frame = new JFrame("My Quadratic Equation");
        myPane = frame.getContentPane();

        calculate = new JButton("Calculate"); // display calculate button
        calculate.addActionListener(this);

        panel0 = new JPanel();
        panel1 = new JPanel();
        panel2 = new JPanel();
    }

    // calculate.addActionListener(new buttonListener());

    public void launchFrame() {

        GridLayout ly0 = new GridLayout(1, 3);
        panel0.setLayout(ly0);

        GridLayout ly1 = new GridLayout(1, 3);
        panel1.setLayout(ly1);

        GridLayout ly2 = new GridLayout(1, 3);
        panel2.setLayout(ly2);

        panel0.add(new JLabel("A :"));
        aText = new JTextField(3);
        panel0.add(aText);
        panel0.add(new JLabel("B :"));
        bText = new JTextField(3);
        panel0.add(bText);
        panel0.add(new JLabel("C :"));
        cText = new JTextField(3);
        panel0.add(cText);

        panel1.add(new JLabel("Answer "));
        ansText = new JTextField(3);
        panel2.add(ansText);
        panel2.add(calculate);

        GridLayout mylayout = new GridLayout(3, 1);
        myPane.setLayout(mylayout);

        myPane.add(panel0);
        myPane.add(panel1);
        myPane.add(panel2);

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
    }

    public void actionPerformed(ActionEvent calc) {
        if (calc.getSource().equals(calculate)) {

            aValue = Integer.parseInt(aText.getText());
            bValue = Integer.parseInt(bText.getText());
            cValue = Integer.parseInt(cText.getText());

            negativeB = bValue - (2 * bValue); // -b
            bSquared = bValue * bValue; // b^2
            fourAC = 4 * aValue * cValue; // 4ac
            twoA = 2 * aValue; // 2a

            result1 = negativeB + (Math.sqrt(bSquared - fourAC)) / twoA;
            result2 = negativeB - (Math.sqrt(bSquared - fourAC)) / twoA;

            ansText.setText(Double.toString(result1));
            ansText.setText(Double.toString(result2));
      /*
       * add (resultDisplay1); add (resultDisplay2); resultDisplay1 = new JLabel("Result 1 : ",); //display result1 resultDisplay2 = new JLabel("Result 2 : ", ); //display result2
       */
        }
    }

    public static void main(String[] args) {
        Math5 Welcome = new Math5();
        Welcome.launchFrame();
        // frame.getContentPane().add(new QuadraticFormula());
    }
}
dotvav
  • 2,808
  • 15
  • 31
  • When I am trying to display the answer, there is a lot of errors in the console. Especially in the part of java.awt. can u help me more on this? Thank you. @dotvav – user2476876 Jul 30 '15 at 04:42
  • What you've got is a `NullPointerException`. You can learn more about NPE here: http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception-and-how-do-i-fix-it/218510#218510 Anyway, I have edited my answer with a proposed fix. – dotvav Jul 30 '15 at 07:29
  • can I have the answer? Thank you @dotvav – user2476876 Aug 01 '15 at 18:27
  • The answer I have written is correct and was working on my computer when I posted it. – dotvav Aug 01 '15 at 18:43