ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

实现计算器监听功能

2019-06-09 14:40:52  阅读:217  来源: 互联网

标签:功能 String output Button public 计算器 new jtf 监听


package next;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class jisuanqi extends JFrame {
 private int add=1,sub=2,mul=3,div=4;
 private int op=0;
 boolean ifOp;
 private String output="0";
 private Button[] jba=new Button[]{
 new Button("7"),new Button("8"),new Button("9"),new Button("+"),
 new Button("4"),new Button("5"),new Button("6"),new Button("-"),
 new Button("1"),new Button("2"),new Button("3"),new Button("*"),
 new Button("0"),new Button("."),new Button("="),new Button("/")};
 private JPanel jpt=new JPanel();
 private JPanel jpb=new JPanel();
 private JTextField jtf=new JTextField("");  private jisuanqi(){
  jpt.setLayout(new BorderLayout());
  jpt.add(jtf);
  this.add(jpt,BorderLayout.NORTH);
  jpb.setLayout(new GridLayout(4,4));
  for(int i=0;i<jba.length;i++){
  jpb.add(jba[i]);
  if(i==3||i==7||i==11||i==15||i==14)
  jba[i].addActionListener(new setOperate_Act());
  else
  jba[i].addActionListener(new setLabel_Act());
  }
  this.add(jpb,BorderLayout.CENTER);
  this.setSize(200, 200); 
  this.setResizable(false);
  this.setVisible(true);
  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 }  private void operate(String x){double x1=Double.valueOf(x);
 double y=Double.valueOf(output);
 switch(op){
 case 0:output=x;break;
 case 1:output=String.valueOf(y+x1);break;
 case 2:output =String.valueOf(y-x1);break;
 case 3:output =String.valueOf(y*x1);break;
 case 4:
 if(x1!=0) output=String.valueOf(y/x1);
 else output="不能为0";
 break;
 }
 }  public String add(String x){
 operate(x);
 op=add;
 return output;
 }
 public String subtract(String x){
  operate(x);
  op=sub;
 return output;
 }
 public String multiply(String x){
  operate(x);
  op=mul;
 return output;
 }
 public String divide(String x){
  operate(x);
  op=div;
 return output;
 }
 public String Equals(String x){
  operate(x);
  op=0;
 return output;
 }
 public void opClean(){
  op=0;
  output="0";
 }  class setOperate_Act implements ActionListener{
  public void actionPerformed(ActionEvent e) {
  if(e.getSource()==jba[3]){
  jtf.setText(add(jtf.getText()));
  ifOp=true;
  }
  else if(e.getSource()==jba[7]){
  jtf.setText(subtract(jtf.getText()));
  ifOp=true;
  }
  else if(e.getSource()==jba[11]){
  jtf.setText(multiply(jtf.getText()));
  ifOp=true;
  }
  else if(e.getSource()==jba[15]){
  jtf.setText(divide(jtf.getText()));
  ifOp=true;
  }
  else if(e.getSource()==jba[14]){
  jtf.setText(Equals(jtf.getText()));
  ifOp=true;
  }
  }
  }   class setLabel_Act implements ActionListener{
  public void actionPerformed(ActionEvent e) {
  Button tempb=(Button)e.getSource();
  if(ifOp){
  jtf.setText(tempb.getLabel());
  ifOp=false;
  }else {
  jtf.setText(jtf.getText()+tempb.getLabel());
  }
  }
  }  
 public static void main(String[] args) {
  // TODO 自动生成的方法存根
  new jisuanqi();  } } 实验结果: 5*9= 12-9= 实验心得:实验中实现算法就比较难了,还好经过一段时间的编写,最后实现了程序。  

标签:功能,String,output,Button,public,计算器,new,jtf,监听
来源: https://www.cnblogs.com/java-17/p/10993425.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有