本人是一名菜鸟,刚刚开始学习Java,学到Java中关于GUI的那部分,就心血来潮想练习一下,写一个简易的计算器。
这是很简易的计算器,界面很简陋,不过我很满足,因为这是我第一个写出来成型的程序
现在,奉献上自己的代码,希望有大神指点一番
package calculator;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
/**
*
* @author Administrator
*/
public class Calculator extends JFrame
{
ButtonListener buttonListener = new ButtonListener(); //按键监听
JButton[] button = new JButton[16]; //16个按键
JTextField text = new JTextField("0"); //计算器的显示器
double a,b; //整数a,b
double result; //运算结果
String c; //运算符号
int isFirstDigit = 1;
//内部类
private class ButtonListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String buttonName = e.getActionCommand();
//test
/* if(buttonName.equals("7"))
{
JOptionPane.showMessageDialog(null,"7");
text.setText(buttonName);
System.out.println(Integer.parseInt(text.getText())+1);
}
*/
if(isFirstDigit == 1)
{
text.setText(buttonName);
isFirstDigit = 0;
}
else
{
if(buttonName.equals("+") || buttonName.equals("-") || buttonName.equals("*") || buttonName.equals("/"))
{
// JOptionPane.showMessageDialog(null, "handleOperator");
a = Double.valueOf(text.getText());
// JOptionPane.showMessageDialog(null, a);
c = buttonName;
isFirstDigit = 1;
}
else if(buttonName.equals("="))
{
b = Double.valueOf(text.getText());
result = handleOperator(c , a , b);
text.setText(Double.toString(result));
isFirstDigit = 1;
}
else
{
String theFrontText = text.getText();
text.setText(theFrontText + buttonName);
}
}
}
}
public Calculator()
{
String[] str = {"7","8","9","/",
"4","5","6","*",
"1","2","3","-",
"0",".","+","="};
JPanel panel1 = new JPanel();
panel1.setLayout(new GridLayout(4,4));
for(int i=0; i < 16; i ++)
{
button[i] =new JButton(str[i]);
button[i].addActionListener(buttonListener);
panel1.add(button[i]);
}
// text.addActionListener(buttonListener);
text.setHorizontalAlignment(JTextField.RIGHT);
add(text,BorderLayout.NORTH);
add(panel1);
setTitle("Calculator");
setSize(230,260);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public double handleOperator(String operator,double a,double b)
{
double result = 0;
switch (operator)
{
case "+":
result = a + b;
break;
case "-":
result = a - b;
break;
case "*":
result = a * b;
break;
case "/":
result = a / b;
break;
default:
break;
}
return result;
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Calculator c1 = new Calculator();
}
}
效果图: