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(图形用户接口), 所谓图 ...
随机推荐
- rank 和 ROW_NUMBER 区别
SELECT * , RANK() OVER ( PARTITION BY APP_NAME ORDER BY SETTING_NAME,SETTING_CODE ASC ) AS Rank FROM ...
- django虚拟环境搭建
windows建立Django项目(建立虚拟环境,安装virtualenv,安装Django,创建项目) 目的:为每一个项目单独配置一个环境例如:项目一使用django1.10, 项目二使用djang ...
- Python——print函数输出对齐问题
原创声明:本文系博主原创文章,转载及引用请注明出处. 当我们使用print函数时,若指定输出宽度,例如: >>> import math >>> print('|P ...
- MySQL in和limit不能连用的问题
今天在mysql上处理一个数据量达到千万级的数据库表时,要取出满足条件的数据集,然后存入到mongo数据库,使用JPA提供的Pageble去拿分页,再用多线程去取数据时,发现刚开始效率还可以,肯定比单 ...
- Maven编译
多模块 只有需要编译成jar的模块才设置build <build> <plugins> <plugin> <groupId>org.springfram ...
- 06 saltstack生产实例-需求
https://github.com/unixhot/saltbook-code .Cobbler 1.15 统一网卡名 .Zabbix 系统已经安装好了! base .手动实现 .需要使用salt的 ...
- Linux系统安装xinetd服务
只需安装xinetd包 安装包 #yum -y install xinetd 安装成功后即可 service xinetd start service xinetd stop service xine ...
- interp2
%关于interp2的自我理解 %利用已知的信息,对数据进行拟合 %用一个例子进行理解 例:设有数据x=1,2,3,4,5,6,y=1,2,3,4,在由x,y构成的网格上,数据为:12,10,11,1 ...
- 灰度图像--频域滤波 傅里叶变换之离散时间傅里叶变换(DTFT)
学习DIP第22天 转载请标明本文出处:http://blog.csdn.net/tonyshengtan,欢迎大家转载,发现博客被某些论坛转载后,图像无法正常显示,无法正常表达本人观点,对此表示很不 ...
- websocket 连接测试端口服务是否正常代码
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...