项目一需要我们做出一个基础的计算器,要包含加减乘除、验算式子等功能,均由Java编写。

首先考虑UI制作,Java自带的Java GUI即Java的图形用户界面,包含了AWT,Swing,javaFX,SWT等界面库。这次预习侧重于学习AWT以及Swing。

1.AWT(Abstract Window Toolkit)

抽象窗口工具包AWT是java提供的建立图形用户界面GUI的开发包,AWT可用于Java的Applet 和 Application 中。java.awt包提供了基本的GUI设计工具,主要包括组件、容器和布局管理器三个概念。
        制作简易计算器的UI可以先用Window类的子类如frame类创建一个主界面,在其中用panel类进行布局,而scrollpane类可用于浏览计算历史。

import java.awt.Color;
import java.awt.Frame;public class FirstFrame extends Frame{public static void main(String[] args) {// TODO Auto-generated method stubFirstFrame fr = new FirstFrame("Hello"); //构造方法fr.setSize(480,640);  //设置Frame的大小fr.setBackground(Color.white); //设置Frame的背景色fr.setVisible(true); //设置Frame为可见,默认不可见}public FirstFrame(String str){super(str);}}

这就可以创建一个简单的主界面。

按钮设计

b_0 = new Button("0");b_0.addActionListener(this);b_1 = new Button("1");b_1.addActionListener(this);b_2 = new Button("2");b_2.addActionListener(this);b_3 = new Button("3");b_3.addActionListener(this);b_4 = new Button("4");b_4.addActionListener(this);b_5 = new Button("5");b_5.addActionListener(this);b_6 = new Button("6");b_6.addActionListener(this);b_7 = new Button("7");b_7.addActionListener(this);b_8 = new Button("8");b_8.addActionListener(this);b_9 = new Button("9");b_9.addActionListener(this);b_plus = new Button("+");b_plus.addActionListener(this);b_minus = new Button("_");b_minus.addActionListener(this);b_multiply = new Button("*");b_multiply.addActionListener(this);b_divide = new Button("/");b_divide.addActionListener(this);b_decimalpoint = new Button(".");b_decimalpoint.addActionListener(this);b_leftbracket = new Button("(");b_leftbracket.addActionListener(this);b_rightbracket = new Button(")");b_rightbracket.addActionListener(this);b_empty = new Button("empty");b_empty.addActionListener(this);b_equal = new Button("=");b_equal.addActionListener(this);b_backspace = new Button("backspace");b_backspace.addActionListener(this);

panel界面设计

        input = new TextField();input.addActionListener(this);input.setBounds(20, 140, 170, 40);input.setFont(new Font("宋体", Font.BOLD, 30));output = new TextField(1000);output.addActionListener(this);output.setBounds(20, 40, 550 - 50, 80);output.setFont(new Font("宋体", Font.BOLD, 35));upper = new JPanel(null);below = new JPanel(new GridLayout(5, 4));upper.setBounds(0, 0, 550, 200);upper.setBackground(new Color(250, 250, 250));upper.add(input);upper.add(output);below.setBounds(0, 200, 550, 400);below.setBackground(Color.black);below.add(b_leftbracket);below.add(b_rightbracket);below.add(b_empty);b_empty.setFont(new Font("宋体", Font.BOLD, 15));b_backspace.setFont(new Font("宋体", Font.BOLD, 15));below.add(b_backspace);below.add(b_7);below.add(b_8);below.add(b_9);below.add(b_divide);below.add(b_4);below.add(b_5);below.add(b_6);below.add(b_multiply);below.add(b_1);below.add(b_2);below.add(b_3);below.add(b_minus);below.add(b_decimalpoint);below.add(b_0);below.add(b_equal);below.add(b_plus);

监听事件

public void actionPerformed(ActionEvent e) {if (e.getSource().equals(b_0)) {s = input.getText();if (s.length() <= 8) {if (!s.equals("0") && EqualNumber != 1) {input.setText(s + "0");}}}if (e.getSource().equals(b_1)) {s = input.getText();if (s.length() <= 8 && EqualNumber != 1) {if (s.equals("0") || s.equals("")) {input.setText("1");} else {input.setText(s + "1");}}}if (e.getSource().equals(b_2)) {s = input.getText();if (s.length() <= 8 && EqualNumber != 1) {if (s.equals("0") || s.equals("")) {input.setText("2");} else {input.setText(s + "2");}}}if (e.getSource().equals(b_3)) {s = input.getText();if (s.length() <= 8 && EqualNumber != 1) {if (s.equals("0") || s.equals("")) {input.setText("3");} else {input.setText(s + "3");}}}if (e.getSource().equals(b_4)) {s = input.getText();if (s.length() <= 8 && EqualNumber != 1) {if (s.equals("0") || s.equals("")) {input.setText("4");} else {input.setText(s + "4");}}}if (e.getSource().equals(b_5)) {s = input.getText();if (s.length() <= 8 && EqualNumber != 1) {if (s.equals("0") || s.equals("")) {input.setText("5");} else {input.setText(s + "5");}}}if (e.getSource().equals(b_6)) {s = input.getText();if (s.length() <= 8 && EqualNumber != 1) {if (s.equals("0") || s.equals("")) {input.setText("6");} else {input.setText(s + "6");}}}if (e.getSource().equals(b_7)) {s = input.getText();if (s.length() <= 8 && EqualNumber != 1) {if (s.equals("0") || s.equals("")) {input.setText("7");} else {input.setText(s + "7");}}}if (e.getSource().equals(b_8)) {s = input.getText();if (s.length() <= 8 && EqualNumber != 1) {if (s.equals("0") || s.equals("")) {input.setText("8");} else {input.setText(s + "8");}}}if (e.getSource().equals(b_9)) {s = input.getText();if (s.length() <= 8 && EqualNumber != 1) {if (s.equals("0") || s.equals("")) {input.setText("9");} else {input.setText(s + "9");}}}if (e.getSource().equals(b_decimalpoint)) {s = input.getText();if (PointNumber == 0) {input.setText(s + ".");PointNumber = 1;}}if (e.getSource().equals(b_plus)) {s = input.getText();char[] ch1 = s.toCharArray();int length1 = s.length() - 1;String S = output.getText();char[] ch2 = S.toCharArray();int length2 = S.length() - 1;//当数字为空或为0或数字的最后一位是小数点时不作处理if ((length2 != -1 && ch2[length2] == ')') || (!s.equals("0") && !s.equals("") && ch1[length1] != '.')) {input.setText("");output.setText(output.getText() + s + "+");}}if (e.getSource().equals(b_minus)) {s = input.getText();char[] ch1 = s.toCharArray();int length1 = s.length() - 1;String S = output.getText();char[] ch2 = S.toCharArray();int length2 = S.length() - 1;if ((length2 != -1 && ch2[length2] == ')') || (!s.equals("0") && !s.equals("") && ch1[length1] != '.')) {input.setText("");output.setText(output.getText() + s + "-");}}if (e.getSource().equals(b_multiply)) {s = input.getText();char[] ch1 = s.toCharArray();int length1 = s.length() - 1;String S = output.getText();char[] ch2 = S.toCharArray();int length2 = S.length() - 1;if ((length2 != -1 && ch2[length2] == ')') || (!s.equals("0") && !s.equals("") && ch1[length1] != '.')) {input.setText("");output.setText(output.getText() + s + "*");}}if (e.getSource().equals(b_divide)) {s = input.getText();char[] ch1 = s.toCharArray();int length1 = s.length() - 1;String S = output.getText();char[] ch2 = S.toCharArray();int length2 = S.length() - 1;if ((length2 != -1 && ch2[length2] == ')') || (!s.equals("0") && !s.equals("") && ch1[length1] != '.')) {input.setText("");output.setText(output.getText() + s + "÷");}}if (e.getSource().equals(b_leftbracket)) {if (!input.getText().equals("0") && !input.getText().contentEquals("")) {output.setText(output.getText() + input.getText());}s = output.getText();char[] ch = s.toCharArray();int length = s.length() - 1;if (length == -1 || ch[length] == '+' || ch[length] == '-' || ch[length] == '*' || ch[length] == '÷' || ch[length] == '(') {output.setText(output.getText() + '(');LNum++;}}if (e.getSource().equals(b_rightbracket)) {if (!input.getText().equals("0")) {output.setText(output.getText() + input.getText());input.setText("");}s = output.getText();char[] ch = s.toCharArray();int length = s.length() - 1;if (Character.isDigit(ch[length]) && LNum > RNum) {RNum++;output.setText(output.getText() + ')');}}if (e.getSource().equals(b_empty)) {input.setText("0");output.setText("");LNum = 0;RNum = 0;PointNumber = 0;EqualNumber = 0;}if (e.getSource().equals(b_backspace)) {int i = input.getText().length();int j = output.getText().length();output.setText(output.getText().substring(0, j - 1));input.setText(input.getText().substring(0, i - 1));}}

计算机软件实习——项目一相关推荐

  1. 计算机软件实习项目三 —— 超级玛丽闯迷宫(游戏介绍 游戏视屏 游戏下载)12-21

    超级玛丽闯迷宫(游戏介绍 & 游戏视屏 & 游戏下载)   经过了几天的开发,超级玛丽床迷宫游戏总算是出炉了.这次开发比前两个项目快了许多,迷宫的定义及随机生成花费一天完成,迷宫自动寻 ...

  2. 计算机软件实习项目三 —— 超级玛丽闯迷宫 (实验准备) 12-19(12-21更新)

    实验准备(超级玛丽闯迷宫)   经过了前面两个项目的实践,我对python和pyqt5已经有了一定的了解,除了能够把实验要求全部完成,还加入了自己的一些想法在游戏里,让游戏更加有趣.   第三个项目主 ...

  3. 计算机软件实习项目二 —— 贪吃蛇游戏 (实验准备)

    目录 一.实验目的 二.编程语言和平台 三.实验难点: 四.参考资料 一.实验目的 1.实现贪吃蛇游戏基本功能,屏幕上随机出现一个"食物",称为豆子 2.上下左右控制"蛇 ...

  4. 计算机软件实习项目二 —— 贪吃蛇游戏 (代码实现) 12-16

    代码实现   不得不说python真是太香了,我感觉写起来比C++快,而且代码量更少,还有非常多十分方便的方法可以使用.在pycharm里有非常多的快捷键十分的方便,相较项目使用的visual stu ...

  5. 计算机软件实习项目三 —— 超级玛丽闯迷宫 (代码实现) 12-21

    代码实现(超级玛丽闯迷宫)   上一篇博客对这个游戏的整体框架以及算法的流程进行了比较详细的设计及分析:对必要的类和类的成员变量.类的方法进行了声明以及声明.这一篇博客主要来呈现相关代码. 目录 代码 ...

  6. 计算机软件实习项目一 简单计算器 (Qt实现计算器界面) 12-5

    UI用户界面 使用Qt Designer对计算器的界面进行制作 目录 UI用户界面 界面设计 功能描述 界面浏览 新功能 1.小数点前后自动补0 2.加减乘除自动切换 3.不允许的操作按了不会生效 4 ...

  7. 计算机软件技术实习 项目一 简单计算器的实现(实验准备)1-(1)

    目录 一.需求分析 二.重难点 三.编程语言 四.开发工具/平台 一.需求分析 1. 能通过设计的按钮控件输入并实现算术表达式,表达式在文本框中显示,运算结果输出显示: 2.保存和浏览历史运算记录: ...

  8. 计算机软件技术实习项目二(一) 贪吃蛇项目准备

    计算机软件技术实习项目二(一) 贪吃蛇项目准备 文章目录 计算机软件技术实习项目二(一) 贪吃蛇项目准备 一.贪吃蛇介绍 二.开发工具 三.实现原理 1.消息与消息队列 2.消息映射 3.设备环境 4 ...

  9. 计算机软件实习日志(三)基于 A*搜索算法迷宫游戏开发

    文章目录 界面展示 前言 一.实验要求? 二.实验准备 三.设计思路 1.A*算法的理解 算法描述 简化搜索区域 简化地图 概述算法步骤 进一步解释 具体寻路过程 F值计算方式: 2.开发思路 使用Q ...

最新文章

  1. mac os x常用快捷键及用法
  2. Java中如何合并有个具有相同key的Map
  3. 通常,Node.js如何处理10,000个并发请求?
  4. 59. Spiral Matrix II
  5. AWS 日本出现大规模故障
  6. Linux centos7 配置用户自动登录
  7. UML在powerDesigner的使用及其相关概念
  8. 初识Nginx服务器
  9. python function terminated_calibre 打不开也转不了 并且出现错误 mobi转docx
  10. 手写自己的MyBatis框架-V2.0配置文件
  11. 类的概念、成员函数的定义方式、类的访问控制和封装、类的大小、this指针
  12. MySQL 之binlog日志说明及利用binlog日志恢复数据操作记录
  13. 前端笔记-分享一个web后台登录及注册页面
  14. 机器学习算法工程师的经典面试问题
  15. 【Python】SciKit-Learn包安装问题
  16. 计算机网络电子邮件的基本格式,怎样的格式才是正确的电子邮件格式?
  17. python 华为交换机自动配置_对python连接华为交换机批量配置优化
  18. matlab编写求解二阶常微分方程,求一个复杂的二阶常微分方程的数值解,不会写代码= =...
  19. Discriminative Feature Learning for Unsupervised Video Summarization(论文翻译)
  20. 第二个c程序,日语208音练习

热门文章

  1. python用openpyxl包操作xlsx文件,统计表中合作电影数目最多的两个演员
  2. 【中秋】纯CSS模拟日地月公转
  3. html5 clipboard 兼容,webpack打包clipboard在页面中报错
  4. Step7-Mricro/win S7-200 485轮询 西门子485 modbus RTU 200 ModbusRTU通信S7-200与最大32个从站RS 485主站程序
  5. java 给时间增加几个小时方法
  6. Doris 创建视图
  7. 2010星网锐捷软件方面笔试题
  8. 经典卷积网络---LeNet、AlexNet、VGGNet、InceptionNet、ResNet [北京大学曹健老师人工智能学习笔记]
  9. 【Verilog基础】Verilog实现加扰器(Scrambler )与解扰器(Descrambler)
  10. 2021年中国铝合金模板行业市场现状及企业格局分析:中国忠旺等行业龙头企业市场份额将不断提升[图]