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(图形用户接口), 所谓图 ...
随机推荐
- 版本控制工具 svn 二
一.图标 忽略图标 实例 二.版本 回滚 tortoisesvn ——> 版本更新——>一般情况下使用 “显示日子” 回滚 三.版本冲突 版本冲突产生原因 多人先后提交文件,每个人提交的文 ...
- Redis03——Redis架构
Redis架构 1.1.问题 redis是单线程,单实例,为什么并发那么多,依旧很快呢? 回答:因为调用了系统内核的epoll 1.2.Linux的早期版本 Linux有Linux kernal,我们 ...
- Appium安装(环境配置)
Appium官方网站:http://appium.io/ 首页底部给出安装步骤, 一.Appium官网提示首先安装node.js,上https://nodejs.org/找找看,下载完后仅用你0.01 ...
- 转:ubuntu添加用户adduser,并给予sudo权限
ubuntu添加用户adduser,并给予sudo权限 如何创建ubuntu新用户? 首先打开终端,输入:sudo adduser username正在添加用户“username”... 正在添加新组 ...
- spark 三种数据集的关系(二)
一个Dataset是一个分布式的数据集,而且它是一个新的接口,这个新的接口是在Spark1.6版本里面才被添加进来的,所以要注意DataFrame是先出来的,然后在1.6版本才出现的Dataset,提 ...
- jsp模糊查询
模板 查询之前: 查询之后: jsp的<script>: $(".inp2").click(function(){ var s=$(".inp"). ...
- BZOJ 2809: [Apio2012]dispatching(可并堆 左偏树板题)
这道题只要读懂题目一切好说. 给出nnn个点的一棵树,每一个点有一个费用vvv和一个领导力aaa,给出费用上限mmm.求下面这个式子的最大值ax∗∣S∣ ( S⊂x的子树, ∑iv[i]≤m )\la ...
- python 中pip配置清华源
anaconda配置镜像 Mac and Linux conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda ...
- Win7安装VS2019
SP1 补丁 WIN7安装VS2019需要更新两个补丁才能顺利安装,否则会闪退. KB4474419 KB4490628 https://zhidao.baidu.com/question/18026 ...
- VirtualBox:启动虚拟机后计算机死机
造冰箱的大熊猫@cnblogs 2018/2/21 故障描述:Ubuntu 16.04升级Linux内核后,在VirtualBox中启动虚拟机发现Ubuntu死机,只能通过长按电源开关硬关机的方式关闭 ...