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. CUDA C编程——NO.1

    CUDA C编程 啥玩意是CUDA? CUDA® is a parallel computing platform and programming model invented by NVIDIA. ...

  2. zencart重置用户登录密码sql

    zencart重置用户ID为99的登录密码为aaaaaaa ;

  3. [易学易懂系列|rustlang语言|零基础|快速入门|(22)|宏Macro]

    [易学易懂系列|rustlang语言|零基础|快速入门|(22)|宏Macro] 实用知识 宏Macro 我们今天来讲讲Rust中强大的宏Macro. Rust的宏macro是实现元编程的强大工具. ...

  4. CSS基础学习-7.CSS元素分类

  5. 【算法学习笔记】RMQ问题与ST表

    \(0.\) RMQ问题 P1816 人话翻译 给定一个长度为\(n\)的数列\(a\),然后有\(m\)组询问,每次询问一个区间\([l,r]\)的最小值. 其中\(m,n\leq10^5\) \( ...

  6. mysql 命令行导出导入数据

    导出数据库(sql脚本)  mysqldump -u 用户名 -p 数据库名 > 导出的文件名mysqldump -u root -p --databases db_name > test ...

  7. Vue双向绑定的实现原理系列(四):补充指令解析器compile

    补充指令解析器compile github源码 补充下HTML节点类型的知识: 元素节点 Node.ELEMENT_NODE(1) 属性节点 Node.ATTRIBUTE_NODE(2) 文本节点 N ...

  8. Wuss Weapp 微信小程序 UI 组件库

    微信小程序 UI 组件库 Github地址 https://github.com/phonycode/wuss-weapp 文档 https://phonycode.github.io/wuss-we ...

  9. css3 扇形动画

    扇形动画,因为我工作中遇到了只执行一次就ok,所以没细研究,该css暂时只能执行1次扇形动画,无限循环会有问题. css: @keyframes rotateAn{ 0%{transform: rot ...

  10. Oracle之:Function :numberToDate()

    create or replace function numberToDate(i_date in number) return date is v_date number; result date ...