如何使用jframe创建计算器 [英] How to create a calculator using jframe

查看:122
本文介绍了如何使用jframe创建计算器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是使用Java的初学者。我试图通过Net beans IDE使用JFrame创建一个计算器。当我运行程序时,构建成功但计算器的GUI显示为空白。这是代码的副本。



I am a beginner at using Java. I am trying to create a calculator using JFrame through Net beans IDE. When I run the program the build is successful but the GUI display of the calculator is blank. Here is a copy of the code.

public static void main(String[] args)
{
    EventQueue.invokeLater(new Runnable()
    {
        @Override
        public void run()
        {
            new Calculator();

        }
    });
     //TODO code application logic here
}


JPanel[] row = new JPanel[5];
JButton[] button = new JButton[19];
String[] buttonString = {"7", "8", "9", "+",
                         "4", "5", "6", "-",
                         "1", "2", "3", "*",
                         ".", "/", "C","Sqrt",
                         "+/-", "=", "0"};
int[] dimW = {300,45,100,90};
int[] dimH = {35, 40};
Dimension displayDimension = new Dimension(dimW[0], dimH[0]);
Dimension regularDimension = new Dimension(dimW[1], dimH[1]);
Dimension rColumnDimension = new Dimension(dimW[2], dimH[1]);
Dimension zeroButDimension = new Dimension(dimW[3], dimH[1]);
boolean[] function = new boolean[4];
double[] temporary = {0, 0};
JTextArea display = new JTextArea(1,20);
Font font = new Font("Times new Roman", Font.BOLD, 12);

Calculator(){
    super("Calculator");
    setDesign();
    setSize(400, 400);
    setResizable(false);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    GridLayout grid = new GridLayout (5,5);
    setLayout(grid);
     setVisible(true);

    for(int i = 0; i < 19; i++)
        function[i] = false;

    FlowLayout f1 = new FlowLayout(FlowLayout.CENTER);
    FlowLayout f2 = new FlowLayout(FlowLayout.CENTER,1,1);
    for(int i = 0; i < 5; i++)
        row[i] = new JPanel();
    row[0].setLayout(f1);
    for(int i = 1; i < 5; i++)
        row[i].setLayout(f2);
    for(int i = 0; i < 19; i++){

        button[i] = new JButton();
        button[i].setText(buttonString[i]);
        button[i].setFont(font);
        button[i].addActionListener(this);}
    display.setFont(font);
    display.setEditable(false);
    display.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
    display.setPreferredSize(displayDimension);
    for(int i = 0; i < 14; i++)
        button[i].setPreferredSize(regularDimension);
    for(int i = 14; i < 18; i++)
        button[i].setPreferredSize(rColumnDimension);
    button[18].setPreferredSize(zeroButDimension);

    row[0].add(display);
    add(row[0]);

    for(int i = 0; i < 4; i++)
        row[1].add(button[i]);
    row[1].add(button[14]);
    add(row[1]);
    for(int i = 4; i < 8; i++)
        row[2].add(button[i]);
    row[2].add(button[15]);
    add(row[2]);

    for(int i = 8; i < 12; i++)
        row[3].add(button[i]);
    row[3].add(button[16]);
    add(row[3]);

    row[4].add(button[18]);
    for(int i = 12; i < 14; i++)
        row[4].add(button[i]);
    row[4].add(button[17]);
    add(row[4]);     
}
 public void clear() {
try{
    display.setText("");
    for (int i = 0; i < 4; i++)
        function[i] = false;
    for(int i = 0; i < 2; i++)
        temporary[i] = 0;
}catch(NullPointerException e) {
}}
public void getSqrt() {
try {
    double value = Math.sqrt(Double.parseDouble(display.getText()));
    display.setText(Double.toString(value));
} catch(NumberFormatException e) {
}
}
public void getPosNeg() {
try {
    double value = Double.parseDouble(display.getText());
    if(value !=0) {
        value = value * (-1);
        display.setText(Double.toString(value));
    }
    else {
    }
} catch(NumberFormatException e) {
}}
public void getResult() {
double result = 0;
temporary[1] = Double.parseDouble(display.getText());
String temp0 = Double.toString(temporary[0]);
String temp1 = Double.toString(temporary[1]);
try {
    if(temp0.contains("-")) {
        String[] temp00 = temp0.split("-", 2);
        temporary[0] = (Double.parseDouble(temp00[1]) * -1);
    }
    if(temp1.contains("-")) {
        String[] temp11 = temp1.split("-", 2);
        temporary[1] = (Double.parseDouble(temp11[1]) * -1);
    }
}
catch(ArrayIndexOutOfBoundsException e) {
}
try {
    if(function[2] == true)
        result = temporary[0] * temporary[1];
    else if(function[3] == true)
        result = temporary[0] / temporary[1];
    else if(function[0] == true)
        result = temporary[0] + temporary[1];
    else if(function[1] == true)
        result = temporary[0] - temporary[1];
    display.setText(Double.toString(result));
    for(int i = 0; i < 4; i++)
        function[i] = false;
}
catch(NumberFormatException e) {
}}
public final void setDesign(){
    try {
        UIManager.setLookAndFeel(
                "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
    } catch(Exception e) {
    }
}

public void actionPerformed(ActionEvent ae) {
   if(ae.getSource() == button[0])
       display.append("7");
   if(ae.getSource() == button[1])
       display.append("8");
   if(ae.getSource() == button[2])
       display.append("9");
   if(ae.getSource() == button[3]) {

       temporary[0] = Double.parseDouble(display.getText());
       function[0] = true;
       display.setText("");
   }
   if(ae.getSource() == button[4])
       display.append("4");
   if(ae.getSource() == button[5]);
   display.append("5");
   if(ae.getSource() == button[6])
       display.append("6");
   if(ae.getSource() == button[7]) {

       temporary[0] = Double.parseDouble(display.getText());
       function[1] = true;
       display.setText("");
   }
   if(ae.getSource() == button[8])
       display.append("1");
   if(ae.getSource() == button[9]);
   display.append("2");
   if(ae.getSource() == button[10]);
   display.append("3");
   if(ae.getSource() == button[11]) {

       temporary[0] = Double.parseDouble(display.getText());
       function[2] = true;
       display.setText("");
   }
   if(ae.getSource() == button[12])
       display.append(".");
   if(ae.getSource() == button[13]) {

       temporary[0] = Double.parseDouble(display.getText());
       function[3] = true;
       display.setText("");
   }
   if(ae.getSource() == button[14])
       clear();
   if(ae.getSource() == button[15])
       getSqrt();
   if(ae.getSource() == button[16])
       getPosNeg();
   if(ae.getSource() == button[17])
       getResult();
   if(ae.getSource() == button[18])
       display.append("0");
}





我的尝试:



我确保我设置了可见代码,但它仍然显示一个空白计算器。可能是什么问题?



What I have tried:

I made sure I put the set visible code but it is still displaying a blank calculator. What could be the problem?

推荐答案

无法找到网上摆动计算器示例...... [ ^ ]。


这篇关于如何使用jframe创建计算器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆