- package calculator;
- import java.awt.BorderLayout;
- import java.awt.Color;
- import java.awt.FlowLayout;
- import java.awt.GridLayout;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import javax.swing.JButton;
- import javax.swing.JFrame;
- import javax.swing.JPanel;
- import javax.swing.JTextField;
- public class JavaCalculator implements ActionListener{
- private JFrame frame;
- private JTextField field;
- private JButton clear;
- private JButton[] allButtons;
- private double number1=0.0,number2=0.0;
- private String operator;
- int index = 0;//记录文本框中输入的小数点个数
- public JavaCalculator(){
- frame=new JFrame("计算器v1.0");
- field=new JTextField(20);
- field.setForeground(Color.RED);
- clear=new JButton("C");
- clear.setBackground(Color.CYAN);
- allButtons=new JButton[16];
- String str="123+456-789*0.=/";
- for(int i=0;i<allButtons.length;i++){//生成主界面数组按钮
- allButtons[i]=new JButton(str.charAt(i)+"");
- }
- init();
- setColor();
- addEventHandler();
- }
- private void init(){
- JPanel north=new JPanel();
- JPanel center=new JPanel();
- north.setLayout(new FlowLayout());
- center.setLayout(new GridLayout(4,4));
- north.add(field);
- north.add(clear);
- // 将按钮数组添加入网格布局管理器中
- for(int i=0;i<allButtons.length;i++){
- center.add(allButtons[i]);
- }
- frame.setLayout(new BorderLayout());
- frame.add(north,BorderLayout.NORTH);
- frame.add(center,BorderLayout.CENTER);
- }
- private void setColor(){
- for(int i=0;i<allButtons.length;i++){
- allButtons[i].setBackground(i%2==0?Color.GREEN:Color.YELLOW);
- }
- }
- public void showMe(){
- frame.pack();
- frame.setLocation(300,300);
- frame.setVisible(true);
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- }
- public void addEventHandler(){
- for(int i=0;i<allButtons.length;i++){
- allButtons[i].addActionListener(this);
- }
- clear.addActionListener(this);
- }
- public void actionPerformed(ActionEvent e) {
- String str = e.getActionCommand().trim();//得到与事件对象相关的事件源文本
- Object temp = e.getSource();//保存数据源
- boolean bool = false;//记录文本框中是否为空
- if(field.getText().length() == 0){
- bool = true;
- }
- //if(str.charAt(0)>='0' && str.charAt(0)<='9'){}
- if("0123456789.".indexOf(str)!=-1){
- field.setText(field.getText().trim()+str.charAt(0));
- //当文本框为空并且按下"."按钮时,输出"0."
- if(bool == true && temp == allButtons[13] && index == 0){
- field.setText("0.");
- }
- //按下"."按钮时,判断当前文本框内字符串中含不含".",如果已含,则不允许再插入"."
- for (int i = 0; i < field.getText().length(); i++){
- if ('.' == field.getText().charAt(i)) {
- index++;
- break;
- }
- }
- if(temp == allButtons[13] && index>1){
- field.setText("已经有了一个小数点,请您正确输入数字!");
- }
- return;
- }
- if("+-*/".indexOf(str)!=-1){
- //在空文本中输入负数
- if(bool == true && temp == allButtons[7]){
- field.setText("-");
- }else if(bool == false){
- number1 = Double.parseDouble(field.getText().trim());
- operator = str.charAt(0)+"";
- number2 = number1;
- field.setText("");
- // index恢复初始值,便于后来进行小数运算
- index = 0;
- }else{field.setText("ERROR");}
- return;
- }
- //进行"+","-","*","/"运算
- if(str.equals("=")){
- number1 = Double.parseDouble(field.getText().trim());
- if(operator.trim().equals("+")){
- double d = number2+number1;
- field.setText(d+"");
- }else if(operator.trim().equals("-")){
- double d = number2-number1;
- field.setText(d+"");
- }else if(operator.trim().equals("*")){
- double d = number2*number1;
- field.setText(d+"");
- }else if(operator.trim().equals("/")){
- //除数不能为零
- if(number1 == 0){
- field.setText("ERROR");
- }else{
- double d = number2/number1;
- field.setText(d+"");
- }
- }else{
- field.setText("ERROR!");
- }
- }
- //清除键
- if(str.equals("C")){
- field.setText("");
- operator="";
- index = 0;
- }
- }
- public static void main(String[] args){
- new JavaCalculator().showMe();
- }
- }
JAVA简单计算器
最新推荐文章于 2022-09-26 08:25:06 发布