使用java swing 代码制作的一个简易版本的计算器,代码由本人亲自写出,如有算法雷同,确实是巧合。 写计算器除了有javaswing技术之外,还需要一些逻辑思维,所以,逻辑思维是每个人都有的,每个人写出的代码都会有所不同,这里的算法供大家参考。
package ; import ; import ; import ; import ; import ; import ; import ; /** * 计算器 * @author liandyao * */ public class CalcFrameTest extends JFrame{ /** * 计算器窗体的宽度 */ public final static int JF_WIDTH= 300 ; /** * 计算器窗体的高度 */ public final static int JF_HEIGHT= 300 ; /** * 按钮的宽度 */ public final static int BT_WIDTH= 50 ; /** * 按钮的高度 */ public final static int BT_HEIGHT= 30 ; /** * 使用的字体 */ public final static Font font = new Font("微软雅黑", Font.BOLD, 20); /** * 数字事件监听类 */ NumberActionListener numberListenere = new NumberActionListener(); /** * 符号事件监听类 */ OpertorActionListener opertorActionListener = new OpertorActionListener() ; /** * 面板容器 */ Container c = null ; javaswing实现购买//面板容器 /** * 计算器的显示数字的文本框 */ JTextField jfNumber ; //计算器的显示数字的文本框 /** * 运算符号 */ String op = "=" ; boolean isOp = false; //定义一个变量,用来区分是否已经点击了符号。默认设置为否 /** * 每次运算的结果 */ double result = 0 ; public CalcFrameTest(){ this.setTitle("计算器"); this.setSize(300, 300) ; this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ; this.setLocationRelativeTo(null) ;//设置在屏幕的中心 this.setResizable(false) ; c = this.getContentPane() ; c.setLayout(null) ; init(); //初始化界面 this.setVisible(true) ; } /** * 初始化界面 */ public void init(){ jfNumber = new JTextField() ; jfNumber.setBounds(10, 5, JF_WIDTH-20, 30) ; c.add(jfNumber) ; /** * 第一行排列 */ JButton jb7 = new JButton("7") ; jb7.setBounds(30, 70, BT_WIDTH, BT_HEIGHT) ; //加入数字按钮事件 jb7.addActionListener(numberListenere) ; c.add(jb7) ; JButton jb8 = new JButton("8") ; jb8.setBounds(90, 70, BT_WIDTH, BT_HEIGHT) ; //加入数字按钮事件 jb8.addActionListener(numberListenere) ; c.add(jb8) ; JButton jb9 = new JButton("9") ; jb9.setBounds(150, 70, BT_WIDTH, BT_HEIGHT) ; //加入数字按钮事件 jb9.addActionListener(numberListenere) ; c.add(jb9) ; /** * 运算符+号出现的地方 */ JButton jb_jia = new JButton("+") ; jb_jia.setFont(font) ; jb_jia.setBounds(210, 70, BT_WIDTH, BT_HEIGHT) ; //加入事件 jb_jia.addActionListener(opertorActionListener) ; c.add(jb_jia) ; /** * +号结束 */ /** * 第2行排列 */ JButton jb4 = new JButton("4") ; jb4.setBounds(30, 110, BT_WIDTH, BT_HEIGHT) ; //加入数字按钮事件 jb4.addActionListener(numberListenere) ; c.add(jb4) ; JButton jb5 = new JButton("5") ; jb5.setBounds(90, 110, BT_WIDTH, BT_HEIGHT) ; //加入数字按钮事件 jb5.addActionListener(numberListenere) ; c.add(jb5) ; JButton jb6 = new JButton("6") ; jb6.setBounds(150, 110, BT_WIDTH, BT_HEIGHT) ; //加入数字按钮事件 jb6.addActionListener(numberListenere) ; c.add(jb6) ; /** * 运算符-号出现的地方 */ JButton jb_jian = new JButton("-") ; jb_jian.setBounds(210, 110, BT_WIDTH, BT_HEIGHT) ; //加入事件 jb_jian.addActionListener(opertorActionListener) ; jb_jian.setFont(font) ; c.add(jb_jian) ; /** * -号结束 */ /** * 第3行排列 */ JButton jb1 = new JButton("1") ; jb1.setBounds(30, 150, BT_WIDTH, BT_HEIGHT) ; //加入数字按钮事件 jb1.addActionListener(numberListenere) ; c.add(jb1) ; JButton jb2 = new JButton("2") ; jb2.setBounds(90, 150, BT_WIDTH, BT_HEIGHT) ; //加入数字按钮事件 jb2.addActionListener(numberListenere) ; c.add(jb2) ; JButton jb3 = new JButton("3") ; jb3.setBounds(150, 150, BT_WIDTH, BT_HEIGHT) ; //加入数字按钮事件 jb3.addActionListener(numberListenere) ; c.add(jb3) ; /** * 运算符*号出现的地方 */ JButton jb_cheng = new JButton("*") ; jb_cheng.setFont(font); jb_cheng.setBounds(210, 150, BT_WIDTH, BT_HEIGHT) ; //加入事件 jb_cheng.addActionListener(opertorActionListener) ; c.add(jb_cheng) ; /** * *号结束 */ /** * 第4行排列 */ //第一个空缺 JButton jb_dian = new JButton("C") ; jb_dian.setBounds(30, 190, BT_WIDTH, BT_HEIGHT) ; jb_dian.addActionListener(numberListenere) ; c.add(jb_dian) ; //第二个开始 JButton jb0 = new JButton("0") ; jb0.setBounds(90, 190, BT_WIDTH, BT_HEIGHT) ; //加入数字按钮事件 jb0.addActionListener(numberListenere) ; c.add(jb0) ; JButton jb_dy = new JButton("=") ; jb_dy.setFont(font); jb_dy.setBounds(150, 190, BT_WIDTH, BT_HEIGHT) ; //加入事件 jb_dy.addActionListener(opertorActionListener) ; c.add(jb_dy) ; /** * 运算符/号出现的地方 */ JButton jb_chu = new JButton("/") ; jb_chu.setFont(font); jb_chu.setBounds(210, 190, BT_WIDTH, BT_HEIGHT) ; //加入事件 jb_chu.addActionListener(opertorActionListener) ; c.add(jb_chu) ; /** * /号结束 */ } /** * 这个是数字的按钮事件 * @author Administrator * */ class NumberActionListener implements ActionListener{ @Override public void actionPerformed(ActionEvent e) { JButton j = (Source() ; //事件的源 String text = j.getText() ; //获取到点击按钮的值 if("C".equals(text)){ jfNumber.setText("0") ; return ; } String yuan = jfNumber.getText() ; //之前已经存在的文本保存 if(isOp){ jfNumber.setText(text) ; //将按钮的值设置到文本框中 isOp = false ;//重新将isOp置为false }else{ jfNumber.setText(yuan+text) ; //将按钮的值设置到文本框中 } } } /** * 这个是符号的按钮事件 * @author Administrator * */ class OpertorActionListener implements ActionListener{ @Override public void actionPerformed(ActionEvent e) { JButton j = (Source() ; //事件的源 String text = j.getText() ; //获取到点击按钮的值 String txt_number = jfNumber.getText() ; //获取到文本框中的数字 double num = Double.valueOf(txt_number).doubleValue() ; if("+".equals(op)){ result += num ; }else if("-".equals(op)){ result -= num ; }else if("*".equals(op)){ result *= num ; }else if("/".equals(op)){ result /= num ; }else if("=".equals(op)){ result = num ; } isOp = true ; //如果点击了符号,则将变量设置为true op = text ; //将符号赋值给op jfNumber.setText(result+"") ; //将计算的结果赋值给文本框 } } /** * @param args */ public static void main(String[] args) { new CalcFrameTest(); } } |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论