zoukankan      html  css  js  c++  java
  • java代码-----计算器,界面+功能+boolean

    总结:还是那个不懂代码放在哪里好?不知道怎么定义一些关键性变量。比如boolean 型的。

    package com.sads;
    
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.*;
    
    public class Test {
    	public static void main(String[] args) {
    		calc c = new calc();
    	}
    }
    
    class calc extends JFrame implements ActionListener {
    	JPanel jp;
    	JButton jb1, jb2, jb3, jb4, jb5, jb6, jb7, jb8, jb9, jb0, jb_jia, jb_jian,
    			jb_cheng, jb_chu, jb_dian, jb_deng;
    	String str;// 定义一个字符串
    	double num1 = 0;
    	double num2 = 0;
    	char c = '';
    	double pp = 0;// 这里又不知道是什么东西::??你妹的
    	boolean ready = true;
    	JLabel jf;
    
    	calc() {
    		jf = new JLabel("0.0");
    		jf.setFont(new Font("", 1, 18));
    		jf.setHorizontalAlignment(JLabel.RIGHT);
    
    		jp = new JPanel(new GridLayout(4, 4));
    		jb1 = new JButton("1");
    		jb2 = new JButton("2");
    		jb3 = new JButton("3");
    		jb_jia = new JButton("+");
    		jb_jia.addActionListener(this);
    		jb4 = new JButton("4");
    		jb5 = new JButton("5");
    		jb6 = new JButton("6");
    		jb_jian = new JButton("-");
    		jb_jian.addActionListener(this);
    		jb7 = new JButton("7");
    		jb8 = new JButton("8");
    		jb9 = new JButton("9");
    		jb0 = new JButton("0");
    		jb_cheng = new JButton("*");
    		jb_cheng.addActionListener(this);
    		jb_chu = new JButton("/");
    		jb_chu.addActionListener(this);
    		jb_deng = new JButton("=");
    		jb_deng.addActionListener(this);
    		jb_dian = new JButton(".");
    		jb_dian.addActionListener(this);
    
    		// jp.add(jf);
    		jf.setBackground(Color.yellow);
    		jp.add(jb1);
    		jb1.addActionListener(this);// 需经过多次尝试,这是简单的几个按钮触发的时候会产生动作,说明只是几个按钮注册了监听。所以要想
    		jb2.addActionListener(this);// 所有的按钮起作用,那么必须所有的按钮都注册了监听事件
    		jb3.addActionListener(this);
    		jb4.addActionListener(this);
    		jb5.addActionListener(this);
    		jb6.addActionListener(this);
    		jb7.addActionListener(this);
    		jb8.addActionListener(this);
    		jb9.addActionListener(this);
    		jb0.addActionListener(this);
    
    		jp.add(jb2);
    		jp.add(jb3);
    		jp.add(jb_jia);
    		jp.add(jb4);
    		jp.add(jb5);
    		jp.add(jb6);
    		jp.add(jb_jian);
    		jp.add(jb7);
    		jp.add(jb8);
    		jp.add(jb9);
    
    		jp.add(jb_cheng);
    		jp.add(jb0);
    		jp.add(jb_chu);
    		jp.add(jb_dian);
    		jp.add(jb_deng);
    		this.add(jf, BorderLayout.NORTH);// 在这里我写错了,我把文本框add到了panel里了。如果放在panel里那么就与按钮一样式流式布局
    		this.add(jp); // 无论如何也不会是放在最上方,
    		this.setBounds(100, 10, 300, 200);
    		this.setDefaultCloseOperation(3);
    		this.setVisible(true);
    		this.setResizable(false);// 这里设置窗体的大小不可变。
    
    	}
    
    	@Override
    	public void actionPerformed(ActionEvent e) {
    
    		str = e.getActionCommand();// 获取所有字符串,包括+ - * / 数字
    		if (str.equals("0") || str.equals("1") || str.equals("2")
    				|| str.equals("3") || str.equals("4") || str.equals("5")
    				|| str.equals("6") || str.equals("7") || str.equals("9")
    				|| str.equals("8") || str.equals("0") || str.equals(".")) {
    
    			if (ready) {
    				jf.setText(str);// 获取到数字,也就是从文本框显示出来
    				ready = false;
    
    			} else {
    				jf.setText(jf.getText() + str);
    				ready = false;// 这里不用加boolean.一定不能加
    
    			}
    
    		} else if (str.equals("+") || str.equals("-") || str.equals("*")
    				|| str.equals("/")) {
    			// 这里的作用是当我们点击了一个符号后,能够实现真的点击了其中的一个运算符号
    			num1 = Double.parseDouble(jf.getText());
    			c = str.charAt(0);// 这里依旧是字符型的
    			ready = true;// 这里第一个数和第二个数是连续输入的,分不开,所以是默认要执行下去,会有点不正常,之后又是正常的
    			// boolean ready = true;// 你妹我又错了,习惯定义为boolean值 这是乱代码完全不合逻辑性的
    			// jf.setText("");//这里把所有的文本框内容都清空了。不对,只对
    		} else if (str.equals("=")) {
    			num2 = Double.parseDouble(jf.getText());
    
    			switch (c) {
    			case '+':
    				pp = (num1 + num2);
    				break;
    			case '-':// num1-num2
    				pp = (num1 - num2);
    				break;
    			case '*':// num1*num2
    				pp = (num1 * num2);
    				break;
    			case '/':// num1/num2
    				pp = (num1 / num2);
    				break;
    
    			}
    			jf.setText(pp + " ");// 这里是将字符转换成字符串
    			ready = true;// 这里是清空的功能,下次输入数字的时候 文本框是重新输入的,并且计算后不是接着计算
    			// 所以这里我是可以继续计算的,方便
    		}
    		// + - * /
    
    		// num1=Double.parseDouble(jf.getText());//将字符串转换为double型
    
    		// num2=Double.parseDouble(jf.getText());//这里面是个String型----不能这么搞,因为会不知道点击的是哪个数?-------
    
    		// char c='';//这是装所有的运算符 -当用户点击+ 那么就是加,///当用户点击-那么就是-//当用户点击*,那么就是*
    
    		// 定义的按钮符号都是用来监听的,我感觉都没用到,
    		// 感觉这个运算符号跟没装是一样的。
    
    	}
    
    }
    

      

  • 相关阅读:
    清除/var/spool/clientmqueue/目录下的文件
    欧几里德法求最大公约数
    博客园美化
    Vue.js学习笔记-script标签在head和body的区别
    C++ 继承
    Ubuntu 更换软件源/镜像源
    12306火车票余票查询&Python实现邮件发送
    饥荒联机代码
    linux内核编程入门 hello world
    windows环境下使用C++&Socket实现文件传输
  • 原文地址:https://www.cnblogs.com/langlove/p/3493395.html
Copyright © 2011-2022 走看看