Puff Pure
Puff Pure

Reputation: 75

JLabel.setText() method

So i was writing a program to solve a quadratic equation, and everything works apart from when it comes to making 2 JLabels (previously empty) show the answers, (this happens when the user clicks a JButton)

Here is the whole program, because i have no idea where the error is.

import java.awt.event.*;

import javax.swing.*;


public class Third implements ActionListener {

    //--------------
    //Data Members
    //--------------
/**
 * Top level window 
 */
JFrame top;
/**
 * Changed into a string by ConvertToDouble(string str);
 */
double a, b, c; 
double answer1,answer2;
JTextField inputA, inputB, inputC;  
JLabel describeA, describeB, describeC, print1, print2;
JButton submit;
String aa, bb, cc;
String result1, result2;
String strA, strB, strC;




    public Third(){

    top = new JFrame("Ned's quadratic equation solver");
    top.setVisible(true);
    top.setLayout(null);
    top.setBounds(50,50,250,250);


    inputA = new JTextField(12);    
    inputA.setBounds(100,30,200,25);
    inputB = new JTextField(12);    
    inputB.setBounds(100,105,200,25);
    inputC = new JTextField(12);    
    inputC.setBounds(100,185,200,25);

    describeA = new JLabel("Enter A here:");
    describeA.setBounds(10,30,200,25);
    describeB = new JLabel("Enter B here:");
    describeB.setBounds(10,105,200,25);
    describeC = new JLabel("Enter C here:");
    describeC.setBounds(10,185,200,25);

    print1 = new JLabel();
    print1.setBounds(15,290,1000,10);
    print2 = new JLabel();
    print2.setBounds(15,310,1000,10);

    submit = new JButton ("WHAT DOES X = ???");
    submit.setBounds(50,230,150,25);
    submit.addActionListener(this);



    top.add(inputA);
    top.add(inputB);
    top.add(inputC);

    top.add(describeA);
    top.add(describeB);
    top.add(describeC);

    top.add(submit);
    top.doLayout();
    }


    public void actionPerformed(ActionEvent event) {

        aa = inputA.getText();
        bb = inputB.getText();
        cc = inputC.getText();

        a = convertToDouble(aa);
        b = convertToDouble(bb);
        c = convertToDouble(cc);

        makeAns(a,b,c);

     /*
      * DEBUG CODE
      *
      * System.out.println(a);
      * System.out.println(b);
      * System.out.println(c);
      * System.out.println(answer1);
      * System.out.println(answer2);
      */
        result1 = "x = " + answer1;
        result2 = "x = " + answer2;

            print1.setText(result1);
            print2.setText(result2);

            //System.out.println(result1);

            top.doLayout();


    }



private void makeAns(double x,double y,double z){   

        answer1 =(-y + Math.sqrt (y*y-4*x*z))/(2*x);
        answer2 =(-y - Math.sqrt (y*y-4*x*z))/(2*x);

    }

private double convertToDouble (String str) {

    Double dubb = new Double(str);
    return  dubb.doubleValue(); 
}


}

Upvotes: 2

Views: 2347

Answers (1)

Hovercraft Full Of Eels
Hovercraft Full Of Eels

Reputation: 285403

You've got to add a component to the GUI first before it can display anything. Where do you add your print1 and print2 JLabels to the GUI or to any container for that matter?

Also, you'll want to use layout managers rather than null layout and absolute positioning to make coding your GUI's much easier.

Also, you'll want to call setVisible(true) on the JFrame after adding all components.

Upvotes: 9

Related Questions