⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cacucc.java

📁 计算器小程序 供初学者参考
💻 JAVA
字号:
/*fasdfasdf
*//
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
//计算器显示结果的窗体 
class Result extends JPanel
{//text先是输入和结果 
 JTextField text=new JTextField("0");
 Result()
 {//讲输入的数字或得到的结果在text的右边显示 
//text.setHorizontalAlignment(SwingConstants.RIGHT); 
  
  text.setHorizontalAlignment(JTextField.RIGHT);
  text.enable(false);//文本框不能编辑 
  this.setLayout(new BorderLayout());//设定布局管理器边框布局 
  add(text,"Center");//text放置在窗体的中间 
 }
}
class Number_Key extends JPanel
{
 //计算器数字按钮定义面板 
  JButton zero=new JButton("0");//数字键0 
  JButton one=new JButton("1");//数字键1
  JButton two=new JButton("2");//数字键2
  JButton three=new JButton("3");//数字键3 
  JButton four=new JButton("4");//数字键4 
  JButton five=new JButton("5");//数字键5
  JButton six=new JButton("6");//数字键6
  JButton seven=new JButton("7");//数字键7
  JButton eight=new JButton("8");//数字键8
  JButton nine=new JButton("9");//数字键9 
  JButton plus=new JButton("+");//数字键+
  JButton sub=new JButton("-");//数字键- 
  JButton mul=new JButton("*");//数字键* 
  JButton div=new JButton("/");//数字键/ 
  JButton equal=new JButton("=");//数字键= 
  JButton ce=new JButton("ce");//置零键 
  JButton point1=new JButton(".");
  JButton tzero=new JButton("00");
 
 Number_Key()
 {
  this.setLayout(new GridLayout(6,3,5,5));//定义布局管理器为网格布局 
  //添加各个按钮键 
  add(seven); 
  add(eight); 
  add(nine); 
  add(four); 
  add(five); 
  add(six); 
  add(one); 
  add(two); 
  add(three); 
  add(zero); 
  add(tzero); 
  add(plus); 
  add(sub); 
  add(mul); 
  add(div); 
  add(point1); 
  add(equal); 
  add(ce); 

  
 }
}
//计算器主类 
public class C extends JFrame implements ActionListener
{
 Result result=new Result();//定义text的面板 
 Number_Key number_key=new Number_Key();//定义按钮面板 
 //当点击按钮+、-、*、/时,com = true 
 boolean com=false;
 //当i=0时说明是我们第一次输入,字符串sum不会累加 
 int i=0;
 //存放text的内容 
 String sum=" ";
 //存放点击按钮+、-、*、/之前的数值 
 double total=0.0;
 //+、-、*、/的代号分别为1,2,3,4 
 int symbol=0;
 C()
 {
  super("记算器");//设定标题 //DO_NOTHING_ON_CLOSE 
  setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);//设定关闭窗体时退出程序 
  //setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
  //setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
  getContentPane().add(result,"North");
  getContentPane().add(number_key,"Center");
  //number_key.one.addActionListener(this);
  number_key.one.addActionListener(this);//对1按钮添加监听事件 
  number_key.two.addActionListener(this);//对2按钮添加监听事件 
  number_key.three.addActionListener(this);//对3按钮添加监听事件 
  number_key.four.addActionListener(this);//对4按钮添加监听事件 
  number_key.five.addActionListener(this);//对5按钮添加监听事件 
  number_key.six.addActionListener(this);
  number_key.seven.addActionListener(this);
  number_key.eight.addActionListener(this);
  number_key.nine.addActionListener(this);
  number_key.zero.addActionListener(this);
  number_key.tzero.addActionListener(this);
  number_key.plus.addActionListener(this);
  number_key.sub.addActionListener(this);
  number_key.ce.addActionListener(this);
  number_key.equal.addActionListener(this);
  number_key.div.addActionListener(this);
  number_key.point1.addActionListener(this);
  number_key.mul.addActionListener(this);
  //number_key.one.addActionListener(this);
  //number_key.one.addActionListener(this);
  setSize(300,400);
  setVisible(true);
  pack();//初始化窗体大小为正好盛放所有按钮 
  
 }//各个按钮触发的事件 
 public void actionPerformed(ActionEvent e)
 {
  
  /*如果是点击数字按钮那么先要判断是否在此之前点击了+、-、*、/、=,如果是那么com=true 
* 如果没有com= false;或者是否点击数字键,如果是i = 1,如果没有 i = 0; 
**/ 
  if(e.getSource()==number_key.one)
  {
   if(com||i==0)
   {
    result.text.setText("1");
    com=false;
    i=1;
   }
   else
   {
    sum=result.text.getText();
    result.text.setText(sum+"1");
   }
  }
  else if(e.getSource()==number_key.two)
  {
   if(com||i==0)
   {
    result.text.setText("2");
    com=false;
    i=1;
   }
   else
   {
    sum=result.text.getText();
    result.text.setText(sum+"2");
   }
  }
  else if(e.getSource()==number_key.three)
  {
   if(com||i==0)
   {
    result.text.setText("3");
    com=false;
    i=1;
   }
   else
   {
    sum=result.text.getText();
    result.text.setText(sum+"3");
   }
  }
  else if(e.getSource()==number_key.four)
  {
   if(com||i==0)
   {
    result.text.setText("4");
    com=false;
    i=1;
   }
   else
   {
    sum=result.text.getText();
    result.text.setText(sum+"4");
   }
  }
  else if(e.getSource()==number_key.five)
  {
   if(com||i==0)
   {
    result.text.setText("5");
    com=false;
    i=1;
   }
   else
   {
    sum=result.text.getText();
    result.text.setText(sum+"5");
   }
  }
  else if(e.getSource()==number_key.six)
  {
   if(com||i==0)
   {
    result.text.setText("6");
    com=false;
    i=1;
   }
   else
   {
    sum=result.text.getText();
    result.text.setText(sum+"6");
   }
  }
  else if(e.getSource()==number_key.seven)
  {
   if(com||i==0)
   {
    result.text.setText("7");
    com=false;
    i=1;
   }
   else
   {
    sum=result.text.getText();
    result.text.setText(sum+"7");
   }
  }
  else if(e.getSource()==number_key.eight)
  {
   if(com||i==0)
   {
    result.text.setText("8");
    com=false;
    i=1;
   }
   else
   {
    sum=result.text.getText();
    result.text.setText(sum+"8");
   }
  }
  else if(e.getSource()==number_key.nine)
  {
   if(com||i==0)
   {
    result.text.setText("9");
    com=false;
    i=1;
   }
   else
   {
    sum=result.text.getText();
    result.text.setText(sum+"9");
   }
  }
/*对于0这个按钮有一定的说法,在我的程序里不会出现如00000这样的情况,我加了判断条件就是 
* 如果text中的数值=0就要判断在这个数值中是否有.存在?如果有那么就在原来数值基础之上添 
* 加0;否则保持原来的数值不变 
*/ 
  else if(e.getSource()==number_key.zero)
  {
   if(com||i==0)
   {
    result.text.setText("0");
    com=false;
    i=1;
   }
   else
   {
    sum=result.text.getText();
    if(Float.parseFloat(sum)<0||Float.parseFloat(sum)>0)
    {
     result.text.setText(sum+"0");
    }
    else
    {
     if(sum.trim().indexOf(".")==-1)
     {
      result.text.setText(sum);
     }
     else
     {
     result.text.setText(sum+"0");
     }
    }
   }
  }
  /*本程序不会让一个数值中出现2个以上的小数点.具体做法是:判断是否已经存在.存在就不添加, 
* 不存在就添加. 
*/ 
  else if(e.getSource()==number_key.tzero)
  {
   if(com||i==0)
   {
    result.text.setText("0");
    com=false;
    i=1;
   }
   else
   {
    sum=result.text.getText();
    if(Float.parseFloat(sum)<0||Float.parseFloat(sum)>0)
    {
     result.text.setText(sum+"00");
    }
    else
    {
     if(sum.trim().indexOf(".")==-1)
     {
      result.text.setText(sum);
     }
     else
     {
     result.text.setText(sum+"00");
     }
    }
   }
  }
  else if(e.getSource()==number_key.ce)
  {
   result.text.setText("0");
   i=0;
   com=true;
  }
  else if(e.getSource()==number_key.point1)
  {
   if(com||i==0)
   {
    result.text.setText("0.");
    com=false;
    i=1;
    
   }
   else
   {
    sum=result.text.getText();
    if(sum.trim().indexOf(".")==-1)
    {
     result.text.setText(sum+".");
    }
    else
    {
     result.text.setText(sum);
    }
   }
  }//获得点击+之前的数值 
  else if(e.getSource()==number_key.plus)
  {
   
   //System.out.println("jiajiajiajia");
   com=true;
   i=0;
   total=Double.parseDouble(result.text.getText());
   symbol=1;
   
  }//获得点击-之前的数值 
  else if(e.getSource()==number_key.sub)
  {
   com=true;
   i=0;
   total=Double.parseDouble(result.text.getText());
   symbol=2;
  }//获得点击*之前的数值 
  else if(e.getSource()==number_key.mul)
  {
   com=true;
   i=0;
   total=Double.parseDouble(result.text.getText());
   symbol=3;
  }//获得点击/之前的数值 
  else if(e.getSource()==number_key.div)
  {
   com=true;
   i=0;
   total=Double.parseDouble(result.text.getText());
   symbol=4;
  } 
  else if(e.getSource()==number_key.equal)
  {
   //System.out.println("dkjfsfj");
   switch(symbol)
   {
    //System.out.println("kaishikaishi");
    case 0:
    {
     System.out.println("!错误!");
     break;
    }
    case 1://计算加法 
    {
     System.out.println("fdkKF");
     double ad=total+Double.parseDouble(result.text.getText());
     result.text.setText(ad+"");
     i=0;
     //com=true;
     break;
    }
    case 2://计算-法 
    {
     double ad=total-Double.parseDouble(result.text.getText());
     result.text.setText(ad+"");
     i=0;
     com=true;
     break;
    }
    case 3://计算*法 
    {
     double ad=total*Double.parseDouble(result.text.getText());
     result.text.setText(ad+"");
     i=0;
     com=true;
     break;
    }
    case 4://计算/法 
    {
     double ad=total/Double.parseDouble(result.text.getText());
     result.text.setText(ad+"");
     i=0;
     com=true;
     break;
    }
   }
  }   
 }
 public static void main(String[] args)
 {
  
  
  JOptionPane.showMessageDialog(null,"程序开始启动");
  final C f=new C();
  //Frame f=new Frame();
  //f.setLayout(new BorderLayout());
  //JOptionPane.showMessageDialog(f,"程序开始启动");
  f.addWindowListener(new WindowAdapter()
  {
   public void windowClosing(WindowEvent e)
   {
    
    int retval=JOptionPane.showConfirmDialog(f,"你真的要结束程序吗?","结束程序",JOptionPane.YES_NO_OPTION);
    if(retval==JOptionPane.YES_OPTION)
    System.exit(0);
   }
  });
  

  
 }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -