2

所以我正在编写一个程序来求解一个二次方程,除了让 2 个 JLabels(以前是空的)显示答案之外,一切都有效,(当用户单击 JButton 时会发生这种情况)

这是整个程序,因为我不知道错误在哪里。

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(); 
}


}
4

1 回答 1

9

您必须先向 GUI 添加一个组件,然后它才能显示任何内容。您在哪里将您的 print1 和 print2 JLabel 添加到 GUI 或任何容器中?

此外,您将希望使用布局管理器而不是空布局和绝对定位来使您的 GUI 编码更容易。

此外,您还需要在添加所有组件setVisible(true)调用JFrame 。

于 2011-12-10T13:42:28.297 回答