Java计算器的图形界面应用程序
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计算器的图形界面应用程序的更多相关文章
- Ubuntu上安装和使用SSH,Xming+PuTTY在Windows下远程Linux主机使用图形界面的程序
自:http://blog.csdn.net/neofung/article/details/6574002 Ubuntu上安装和使用SSH 网上有很多介绍在Ubuntu下开启SSH服务的文章,但大 ...
- Java中的图形界面编程
前言 正文 Java中的图形界面编程 AWT/Swing AWT(Abstract Window ToolKits,抽象窗体工具集) 1.容器类:用来存储组件,实现容器布局 2.组件类:实现界面的一些 ...
- JAVA简单Swing图形界面应用演示样例
JAVA简单Swing图形界面应用演示样例 package org.rui.hello; import javax.swing.JFrame; /** * 简单的swing窗体 * @author l ...
- 创建Win32图形界面应用程序
没有什么比创建一个Win32图形界面应用程序能让Win32汇编初学者更兴奋的了! 然而,对于像我这样没有代码便会陷入困境的人来说,看到下面的代码总能让人为之一振,百余行的代码使得Win32GUI编程并 ...
- JAVA记事本的图形用户界面应用程序含过滤
JAVA记事本的图形用户界面应用程序 过滤 题目简介: 整体分析: 实验代码: package note; import java.awt.EventQueue; import java.awt.ev ...
- JAVA记事本的图形用户界面应用程序含加密
JAVA记事本的图形用户界面应用程序 加密 题目简介: 整体分析: 实验代码: import java.awt.EventQueue; import java.awt.event.ActionEven ...
- JAVA记事本的图形用户界面应用程序
JAVA记事本的图形用户界面应用程序 整体分析: 代码实现: import java.awt.EventQueue; import java.awt.event.ActionEvent; import ...
- 第15.17节 PyQt(Python+Qt)入门学习:PyQt图形界面应用程序的事件捕获方法大全及对比分析
老猿Python博文目录 老猿Python博客地址 按照老猿规划的章节安排,信号和槽之后应该介绍事件,但事件在前面的随笔<PyQt(Python+Qt)实现的GUI图形界面应用程序的事件捕获方法 ...
- 第58节:Java中的图形界面编程-GUI
欢迎到我的简书查看我的文集 前言: GUI是图形用户界面,在Java中,图形用户界面我们用GUI表示,而GUI的完整英文为: Graphical User Interface(图形用户接口), 所谓图 ...
随机推荐
- UDS报文解读
UDS(Unified Diagnostic Services,统一的诊断服务)诊断协议是ISO 15765 和ISO 14229 定义的一种汽车通用诊断协议,位于OSI模型中的应用层,它可在不同的汽 ...
- python常有模块:模块、引入语法、两种执行方式、模块搜索顺序
今天主要讲了以下几点:一.模块三问.定义及分类二.import和from的语法三.文件的两种执行方式及搜索顺序四.内置函数 一.模块.import和from的语法 1.什么是模块 模块是一堆功能函 ...
- springboot自动装备date类型报错问题
错误消息: Field error in object 'user' on field 'birthday': rejected value [2001-02-14]; codes [typeMism ...
- js去掉url后某参数【函数封装】
function delParam(paramKey) { var url = window.location.href; //页面url var urlParam = window.location ...
- idea中添加mybatis mapper 样例
代码: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC &quo ...
- IMP-00058: ORACLE error 1882 encountered
问题现象: IMP: ORACLE error encountered ORA: timezone region not found ORA: at "SYS.DBMS_EXPORT_EXT ...
- 【经典dp】hdu4622Reincarnation
呕 卡64M内存卡了好久 题目描述 题目大意 给出一个字符串 S,每次询问一个区间的本质不同的子串个数.$|S| \le 2000$. 题目分析 首先无脑$n^2$个set开起来:MLE 稍微想想这 ...
- Winforms界面开发DevExpress v19.2:Map、Pivot Grid等功能增强
DevExpress Winforms Controls 内置140多个UI控件和库,完美构建流畅.美观且易于使用的应用程序.无论是Office风格的界面,还是分析处理大批量的业务数据,DevExpr ...
- Acwing-204-表达整数的奇怪方式(扩展中国剩余定理)
链接: https://www.acwing.com/problem/content/206/ 题意: 给定2n个整数a1,a2,-,an和m1,m2,-,mn,求一个最小的非负整数x,满足∀i∈[1 ...
- HTTP协议几个版本的理解
HTTP (HyperText transfer protocol) 超文本传输协议 Http是一个应用层协议,基于TCP协议(传输层)之上,规定WWW服务器 浏览器之间信息传递规范.使用的默认端口号 ...