JLabel.setText () метод - PullRequest
       30

JLabel.setText () метод

2 голосов
/ 10 декабря 2011

Итак, я писал программу для решения квадратного уравнения, и все работает отдельно от того, чтобы 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(); 
}


}

1 Ответ

8 голосов
/ 10 декабря 2011

Вы должны сначала добавить компонент в графический интерфейс, прежде чем он сможет что-либо отобразить. Куда вы добавляете J1abels print1 и print2 в графический интерфейс или в любой другой контейнер?

Кроме того, вы захотите использовать менеджеры компоновки, а не нулевую компоновку и абсолютное позиционирование, чтобы значительно упростить кодирование вашего графического интерфейса.

Кроме того, вы захотите вызвать setVisible(true) на JFrame после добавления всех компонентов.

...