JAVA计算器的图形界面应用程序

题目简介:

整体分析:

实验代码:

/*部分使用插件做界面*/
import java.awt.EventQueue; import javax.swing.JButton;
import javax.swing.JFrame;
import java.awt.BorderLayout;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import java.awt.Font;
import javax.swing.JPanel;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import javax.swing.border.EmptyBorder; /**
* @author 李祖林
* @Time 2017-6-22
*/
public class Calcultor implements ActionListener { int i;
int status = 0; // 保存运算符:0为空,1为加,2为减,3为乘,4为除
double sum1 = 0, sum2 = 0; // sum1为第一个数,也用于保存连续运算中的结果,sum2为第二个数
boolean key = false; // 判断是否有运算符 private JFrame frame;
JButton[] bN = new JButton[10]; // bN为数字按钮,0-9分别表示0-9个数字
JButton[] bC = new JButton[6]; // bC为运算符按钮
private JTextField textField; public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Calcultor window = new Calcultor();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
} public Calcultor() { frame = new JFrame();
frame.setBounds(100, 100, 510, 310);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(new BorderLayout(0, 0)); textField = new JTextField();
textField.setFont(new Font("宋体", Font.BOLD, 18));
textField.setHorizontalAlignment(SwingConstants.RIGHT);
frame.getContentPane().add(textField, BorderLayout.NORTH);
textField.setColumns(10); JPanel panel = new JPanel();
panel.setBorder(new EmptyBorder(20, 20, 20, 20)); // 设置panel的空白的上下左右间距为20
frame.getContentPane().add(panel, BorderLayout.CENTER);
panel.setLayout(new GridLayout(4, 4, 20, 20)); for (i = 0; i <= 9; i++) {
bN[i] = new JButton(String.valueOf(i)); // String.valueOf(i)可以将其他类型数据转化为字符串
bN[i].addActionListener(this);
}
bC[0] = new JButton("C"); // bC[0]表示清空
bC[1] = new JButton("+"); // bC[1]表示加
bC[2] = new JButton("-"); // bC[2]表示减
bC[3] = new JButton("*"); // bC[3]表示乘
bC[4] = new JButton("/"); // bC[4]表示除
bC[5] = new JButton("="); // bC[5]表示等于
for (i = 0; i <= 5; i++) {
bC[i].addActionListener(this);
} panel.add(bN[9]);
panel.add(bN[8]);
panel.add(bN[7]);
panel.add(bC[0]);
panel.add(bN[6]);
panel.add(bN[5]);
panel.add(bN[4]);
panel.add(bC[1]);
panel.add(bN[3]);
panel.add(bN[2]);
panel.add(bN[1]);
panel.add(bC[2]);
panel.add(bN[0]);
panel.add(bC[3]);
panel.add(bC[4]);
panel.add(bC[5]); } public void actionPerformed(ActionEvent e) {
if (e.getSource() == bC[0]) {
sum1 = 0;
sum2 = 0;
status = 0;
key = false;
textField.setText("");
}
if (key == false) { // 未按下运算符 for (i = 0; i <= 9; i++) {
if (e.getSource() == bN[i]) { // 如果为数字按钮
sum1 = sum1 * 10 + i;
textField.setText(String.valueOf(sum1));
}
}
for (i = 1; i <= 4; i++) { // 如果为控制按钮
if (e.getSource() == bC[i]) {
status = i; // 保存运算符的状态
key = true; // 标记已按下运算符
}
}
} else {
boolean tmp = false;
for (i = 0; i <= 9; i++) {
if (e.getSource() == bN[i]) {
tmp = true;
sum2 = sum2 * 10 + i;
textField.setText(String.valueOf(sum2));
}
}
if (tmp == false) {
switch (status) {
case 1:
sum1 = sum1 + sum2;
break;
case 2:
sum1 = sum1 - sum2;
break;
case 3:
sum1 = sum1 * sum2;
break;
case 4:
sum1 = sum1 / sum2;
break;
}
for (i = 1; i <= 4; i++) {
if (e.getSource() == bC[i]) {
status = i;
sum2 = 0;
}
}
if (e.getSource() == bC[5]) {
status = 0;
textField.setText(String.valueOf(sum1));
sum1 = 0;
sum2 = 0;
key = false;
}
}
} } }

实验结果:

                                                                            2017-06-22

Java计算器的图形界面应用程序的更多相关文章

  1. Ubuntu上安装和使用SSH,Xming+PuTTY在Windows下远程Linux主机使用图形界面的程序

    自:http://blog.csdn.net/neofung/article/details/6574002 Ubuntu上安装和使用SSH  网上有很多介绍在Ubuntu下开启SSH服务的文章,但大 ...

  2. Java中的图形界面编程

    前言 正文 Java中的图形界面编程 AWT/Swing AWT(Abstract Window ToolKits,抽象窗体工具集) 1.容器类:用来存储组件,实现容器布局 2.组件类:实现界面的一些 ...

  3. JAVA简单Swing图形界面应用演示样例

    JAVA简单Swing图形界面应用演示样例 package org.rui.hello; import javax.swing.JFrame; /** * 简单的swing窗体 * @author l ...

  4. 创建Win32图形界面应用程序

    没有什么比创建一个Win32图形界面应用程序能让Win32汇编初学者更兴奋的了! 然而,对于像我这样没有代码便会陷入困境的人来说,看到下面的代码总能让人为之一振,百余行的代码使得Win32GUI编程并 ...

  5. JAVA记事本的图形用户界面应用程序含过滤

    JAVA记事本的图形用户界面应用程序 过滤 题目简介: 整体分析: 实验代码: package note; import java.awt.EventQueue; import java.awt.ev ...

  6. JAVA记事本的图形用户界面应用程序含加密

    JAVA记事本的图形用户界面应用程序 加密 题目简介: 整体分析: 实验代码: import java.awt.EventQueue; import java.awt.event.ActionEven ...

  7. JAVA记事本的图形用户界面应用程序

    JAVA记事本的图形用户界面应用程序 整体分析: 代码实现: import java.awt.EventQueue; import java.awt.event.ActionEvent; import ...

  8. 第15.17节 PyQt(Python+Qt)入门学习:PyQt图形界面应用程序的事件捕获方法大全及对比分析

    老猿Python博文目录 老猿Python博客地址 按照老猿规划的章节安排,信号和槽之后应该介绍事件,但事件在前面的随笔<PyQt(Python+Qt)实现的GUI图形界面应用程序的事件捕获方法 ...

  9. 第58节:Java中的图形界面编程-GUI

    欢迎到我的简书查看我的文集 前言: GUI是图形用户界面,在Java中,图形用户界面我们用GUI表示,而GUI的完整英文为: Graphical User Interface(图形用户接口), 所谓图 ...

随机推荐

  1. openGL中的gl,glu,glut

    OpenGL函数库相关的API有核心库(gl).实用库(glu).辅助库(aux).实用工具库(glut).窗口库(glx.agl.wgl)和扩展函数库等.gl是核心,glu是对gl的部分封装.glx ...

  2. 二进制;16进制; Byte , Python的bytes类; Base64数据编码; Bae64模块;

    参考:中文维基 二进制 位操作(wiki) Byte字节 互联网数据处理:Base64数据编码 Python的模块Base64 16进制简介 python: bytes对象 字符集介绍:ascii 二 ...

  3. top命令经常用来监控linux的系统状况,比如cpu、内存的使用,程序员基本都知道这个命令。 按 q 退出

    top命令经常用来监控linux的系统状况,比如cpu.内存的使用,程序员基本都知道这个命令. 按 q 退出

  4. 搭建zookeeper集群_其中一个报Mode: standalone,另外两个分别是leader和follower

    用3个zookeeper搭建一个zookeeper集群,首先配置好一个zookeeper1,其余两个都是按照zookeeper1复制过来,然后稍微修改 运行集群成功,查看zookeeper状态 可以看 ...

  5. vector引用参数

    #include<iostream> #include<vector> using namespace std; //定义一个计算数字的函数,返回计算后的vector numb ...

  6. 【jqGrid】翻页获取选中的值

    1.实现效果: 点击确定所选按钮之后,获取翻页选中的题库表号 2.关键代码 onSelectAll: function (aRowids, status) { }, onSelectRow: func ...

  7. springboot中spring.profiles.include的妙用

    我们在开发Spring Boot应用时,通常同一套程序会被应用和安装到几个不同的环境,比如:开发.测试.生产等.其中每个环境的数据库地址.服务器端口等等配置都会不同,如果在为不同环境打包时都要频繁修改 ...

  8. 编译原理--02 自顶向下、自底向上的LR分析复习(清华大学出版社第3版)

    前言 目录 01 文法和语言.词法分析复习 02 自顶向下.自底向上的LR分析复习 03 语法制导翻译和中间代码生成复习 04 符号表.运行时存储组织和代码优化复习 第4章 自顶向下的语法分析方法 确 ...

  9. 【Python之路】特别篇--Python面向对象(进阶篇)

    上一篇<Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...

  10. USACO19JAN Redistricting

    题目链接:戳我 一个优先队列优化DP 一定要注意第二关键字的排序啊!!我真的是菜,被坑了好久qwq 设\(f[i]\)表示前i个的最小答案,从前面选择的时候第一关键字是f[j]的大小,第二关键字是要确 ...