Java Calc不会显示和退出

时间:2018-05-27 16:17:15

标签: java swing awt

我已经创建了一个基于Java GUI的小型计算器应用程序,但它提出了一个问题,即当我启动时它没有在屏幕上显示任何内容,它会立即自动存在。什么地方出了错?这是我的SmallCalcApp的java类的代码: .................................................. .................................................. .................................................. ....................

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

public class SmallCalcApp implements ActionListener{

    JFrame frame;
    JLabel firstOperand, secondOperand, answer; 
    JTextField op1, op2, ans;
    JButton plus, mul;

    public SmallCalcApp(){
        initGUI();
    }

    public void initGUI(){

        frame = new JFrame();
        Container con = frame.getContentPane();
        con.setLayout(new FlowLayout());


        plus = new JButton("+");
        mul = new JButton("*");
        con.add(plus);
        con.add(mul);


        plus.addActionListener(this);
        mul.addActionListener(this);



        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(200,200);
        frame.setVisible(true);
    }

    public void actionPerformed(ActionEvent event){
            String oper, result;
            int num1, num2, res;

            if(event.getSource() == plus){
                oper = op1.getText();
                num1 = Integer.parseInt(oper);

                oper = op2.getText();
                num2 = Integer.parseInt(oper);

                res = num1 + num2;
                result = res + "";

                ans.setText(result);
            }

            if(event.getSource() == mul){
                oper = op1.getText();
                num1 = Integer.parseInt(oper);

                oper = op2.getText();
                num2 = Integer.parseInt(oper);

                res = num1 * num2;
                result = res + "";

                ans.setText(result);
            }
        } 


    public static void main(String args[]){
        SmallCalcApp sc;
    }
}

1 个答案:

答案 0 :(得分:2)

那是因为你没有创建SmallCalcApp的任何实例。

替换: SmallCalcApp sc;SmallCalcApp sc = new SmallCalcApp();为了做到这一点。

此外,所有Swing应用程序必须在自己的线程上运行。有关详情,请阅读this.

所以,你的主要应该是:

    public static void main(String args[]) {
        SwingUtilities.invokeLater(() -> {
            new SmallCalcApp();
        });
    }