1. package com.rgy.entity;
  2. import java.awt.BorderLayout;
  3. import java.awt.Font;
  4. import java.awt.GridLayout;
  5. import java.awt.event.ActionEvent;
  6. import java.awt.event.ActionListener;
  7. import javax.swing.BorderFactory;
  8. import javax.swing.JButton;
  9. import javax.swing.JFrame;
  10. import javax.swing.JPanel;
  11. import javax.swing.JTextField;
  12. import javax.swing.WindowConstants;
  13. @SuppressWarnings("serial")
  14. public class Calculator2 extends JFrame{
  15. // 声明辅助变量
  16. private String str = "0";// 保存显示框中的字符串
  17. private String show_str="";// 保存副显示框中的字符串
  18. private double num_record = 0;// 记录当前数据的值
  19. private int operator = 0;// 记录当前运算符类型
  20. private int count_point=0;// 记录小数点个数,避免反复输入小数点
  21. // 声明并初始化各个组件
  22. private JTextField text_show = new JTextField("0");
  23. private JTextField text_show1 = new JTextField();
  24. private JPanel panel_up = new JPanel();
  25. private JPanel panel_CEandC = new JPanel();
  26. private JPanel panel_keys = new JPanel();
  27. private JButton button_CE = new JButton("CE");
  28. private JButton button_C = new JButton("C");
  29. private JButton button_num0 = new JButton("0");
  30. private JButton button_num1 = new JButton("1");
  31. private JButton button_num2 = new JButton("2");
  32. private JButton button_num3 = new JButton("3");
  33. private JButton button_num4 = new JButton("4");
  34. private JButton button_num5 = new JButton("5");
  35. private JButton button_num6 = new JButton("6");
  36. private JButton button_num7 = new JButton("7");
  37. private JButton button_num8 = new JButton("8");
  38. private JButton button_num9 = new JButton("9");
  39. private JButton button_division = new JButton("/");
  40. private JButton button_multiplication = new JButton("*");
  41. private JButton button_cut = new JButton("-");
  42. private JButton button_add = new JButton("+");
  43. private JButton button_equal = new JButton("=");
  44. private JButton button_point = new JButton(".");
  45. public Calculator2(String s) {
  46. super(s);
  47. this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  48. this.setBounds(500,250,270,400);
  49. this.setVisible(true);
  50. //设置显示框
  51. text_show.setHorizontalAlignment(JTextField.RIGHT);
  52. text_show.setFont(new Font("Default", 0, 30));
  53. text_show.setEditable(false);// 不可编辑
  54. text_show1.setHorizontalAlignment(JTextField.RIGHT);
  55. text_show1.setFont(new Font("Default", 0, 16));
  56. text_show1.setEditable(false);
  57. // 设置布局及边框
  58. panel_up.setLayout(new BorderLayout());
  59. button_CE.setBorder(BorderFactory.createRaisedBevelBorder());
  60. button_C.setBorder(BorderFactory.createRaisedBevelBorder());
  61. button_CE.setFont(new Font("Default", 1, 20));
  62. button_C.setFont(new Font("Default", 1, 20));
  63. panel_up.setBorder(BorderFactory.createEtchedBorder ());
  64. panel_CEandC.setLayout(new GridLayout(1, 2, 7, 7));
  65. panel_keys.setLayout(new GridLayout(4, 4, 7, 7));
  66. // 面板的嵌套
  67. panel_up.add(text_show1, BorderLayout.NORTH);
  68. panel_up.add(text_show, BorderLayout.CENTER);
  69. panel_up.add(panel_CEandC, BorderLayout.SOUTH);
  70. this.add(panel_up, BorderLayout.NORTH);
  71. this.add(panel_keys, BorderLayout.CENTER);
  72. //在面板上加入按钮
  73. panel_CEandC.add(button_CE);panel_CEandC.add(button_C);
  74. panel_keys.add(button_num7);panel_keys.add(button_num8);
  75. panel_keys.add(button_num9);panel_keys.add(button_division);
  76. panel_keys.add(button_num4);panel_keys.add(button_num5);
  77. panel_keys.add(button_num6);panel_keys.add(button_multiplication);
  78. panel_keys.add(button_num1);panel_keys.add(button_num2);
  79. panel_keys.add(button_num3);panel_keys.add(button_cut);
  80. panel_keys.add(button_num0);panel_keys.add(button_point);
  81. panel_keys.add(button_equal);panel_keys.add(button_add);
  82. //加入事件(匿名内部类)
  83. button_num0.addActionListener(new ActionListener() {
  84. public void actionPerformed(ActionEvent e) {
  85. if (text_show.getText().equals("0")) {
  86. text_show.setText("");
  87. }
  88. str = text_show.getText() + "0";
  89. text_show.setText(str);
  90. }
  91. });
  92. button_num1.addActionListener(new ActionListener() {
  93. public void actionPerformed(ActionEvent e) {
  94. if (operator != 5) {
  95. if (text_show.getText().equals("0")) {
  96. text_show.setText("");
  97. }
  98. str = text_show.getText() + "1";
  99. text_show.setText(str);
  100. }
  101. else {
  102. setClear();
  103. str = text_show.getText() + "1";
  104. text_show.setText(str);
  105. }
  106. }
  107. });
  108. button_num2.addActionListener(new ActionListener() {
  109. public void actionPerformed(ActionEvent e) {
  110. if (operator != 5) {
  111. if (text_show.getText().equals("0")) {
  112. text_show.setText("");
  113. }
  114. str = text_show.getText() + "2";
  115. text_show.setText(str);
  116. }
  117. else {
  118. setClear();
  119. str = text_show.getText() + "2";
  120. text_show.setText(str);
  121. }
  122. }
  123. });
  124. button_num3.addActionListener(new ActionListener() {
  125. public void actionPerformed(ActionEvent e) {
  126. if (operator != 5) {
  127. if (text_show.getText().equals("0")) {
  128. text_show.setText("");
  129. }
  130. str = text_show.getText() + "3";
  131. text_show.setText(str);
  132. }
  133. else {
  134. setClear();
  135. str = text_show.getText() + "3";
  136. text_show.setText(str);
  137. }
  138. }
  139. });
  140. button_num4.addActionListener(new ActionListener() {
  141. public void actionPerformed(ActionEvent e) {
  142. if (operator != 5) {
  143. if (text_show.getText().equals("0")) {
  144. text_show.setText("");
  145. }
  146. str = text_show.getText() + "4";
  147. text_show.setText(str);
  148. }
  149. else {
  150. setClear();
  151. str = text_show.getText() + "4";
  152. text_show.setText(str);
  153. }
  154. }
  155. });
  156. button_num5.addActionListener(new ActionListener() {
  157. public void actionPerformed(ActionEvent e) {
  158. if (operator != 5) {
  159. if (text_show.getText().equals("0")) {
  160. text_show.setText("");
  161. }
  162. str = text_show.getText() + "5";
  163. text_show.setText(str);
  164. }
  165. else {
  166. setClear();
  167. str = text_show.getText() + "5";
  168. text_show.setText(str);
  169. }
  170. }
  171. });
  172. button_num6.addActionListener(new ActionListener() {
  173. public void actionPerformed(ActionEvent e) {
  174. if (operator != 5) {
  175. if (text_show.getText().equals("0")) {
  176. text_show.setText("");
  177. }
  178. str = text_show.getText() + "6";
  179. text_show.setText(str);
  180. }
  181. else {
  182. setClear();
  183. str = text_show.getText() + "6";
  184. text_show.setText(str);
  185. }
  186. }
  187. });
  188. button_num7.addActionListener(new ActionListener() {
  189. public void actionPerformed(ActionEvent e) {
  190. if (operator != 5) {
  191. if (text_show.getText().equals("0")) {
  192. text_show.setText("");
  193. }
  194. str = text_show.getText() + "7";
  195. text_show.setText(str);
  196. }
  197. else {
  198. setClear();
  199. str = text_show.getText() + "7";
  200. text_show.setText(str);
  201. }
  202. }
  203. });
  204. button_num8.addActionListener(new ActionListener() {
  205. public void actionPerformed(ActionEvent e) {
  206. if (operator != 5) {
  207. if (text_show.getText().equals("0")) {
  208. text_show.setText("");
  209. }
  210. str = text_show.getText() + "8";
  211. text_show.setText(str);
  212. }
  213. else {
  214. setClear();
  215. str = text_show.getText() + "8";
  216. text_show.setText(str);
  217. }
  218. }
  219. });
  220. button_num9.addActionListener(new ActionListener() {
  221. public void actionPerformed(ActionEvent e) {
  222. if (operator != 5) {
  223. if (text_show.getText().equals("0")) {
  224. text_show.setText("");
  225. }
  226. str = text_show.getText() + "9";
  227. text_show.setText(str);
  228. }
  229. else {
  230. setClear();
  231. str = text_show.getText() + "9";
  232. text_show.setText(str);
  233. }
  234. }
  235. });
  236. button_point.addActionListener(new ActionListener() {
  237. public void actionPerformed(ActionEvent e) {
  238. if(count_point==0){
  239. str=text_show.getText()+".";
  240. text_show.setText(str);
  241. count_point++;
  242. }
  243. else{//假设小数点个数超过一个就不再输入小数点
  244. return;
  245. }
  246. }
  247. });
  248. button_C.addActionListener(new ActionListener() {
  249. public void actionPerformed(ActionEvent e) {//所有清空,包含数据和运算符
  250. setClear();
  251. text_show.setText("0");
  252. }
  253. });
  254. button_CE.addActionListener(new ActionListener() {
  255. public void actionPerformed(ActionEvent e) {
  256. if(operator==5){//对于按过等号的数据。则所有清空
  257. num_record=0;
  258. str="";
  259. text_show.setText("0");
  260. }
  261. else{//没按过等号的从低到高位依次降低位数
  262. if(str.length()!=0){//假设显示框中的数据长度不为0
  263. str=text_show.getText();
  264. str=str.substring(0,str.length()-1);
  265. if(str.length()>1){
  266. text_show.setText(str);
  267. }
  268. else{
  269. str="";
  270. text_show.setText("0");
  271. }
  272. }
  273. }
  274. }
  275. });
  276. button_add.addActionListener(new ActionListener() {
  277. public void actionPerformed(ActionEvent e) {
  278. if (str.equals("")) {}
  279. else {
  280. switch (operator) {
  281. case 0:
  282. num_record = Double.parseDouble(str);break;
  283. case 1:
  284. num_record = num_record + Double.parseDouble(str);break;
  285. case 2:
  286. num_record = num_record - Double.parseDouble(str);break;
  287. case 3:
  288. num_record = num_record * Double.parseDouble(str);break;
  289. case 4:
  290. num_record = num_record / Double.parseDouble(str);break;
  291. case 5:break;
  292. }
  293. show_str=show_str+text_show.getText()+"+";
  294. text_show1.setText(show_str);
  295. str="";
  296. text_show.setText("");
  297. operator=1;
  298. }
  299. }
  300. });
  301. button_cut.addActionListener(new ActionListener() {
  302. public void actionPerformed(ActionEvent e) {
  303. if(text_show.getText().equals("0")){
  304. if(operator==0){//负号的功能
  305. str="-";
  306. text_show.setText(str);
  307. }
  308. else{
  309. return;
  310. }
  311. }
  312. else{
  313. if (str.equals("")) {}
  314. else {
  315. switch (operator) {
  316. case 0:
  317. num_record = Double.parseDouble(str);break;
  318. case 1:
  319. num_record = num_record + Double.parseDouble(str);break;
  320. case 2:
  321. num_record = num_record - Double.parseDouble(str);break;
  322. case 3:
  323. num_record = num_record * Double.parseDouble(str);break;
  324. case 4:
  325. num_record = num_record / Double.parseDouble(str);break;
  326. case 5:break;
  327. }
  328. show_str=show_str+text_show.getText()+"-";
  329. text_show1.setText(show_str);
  330. str="";
  331. text_show.setText("");
  332. operator=2;
  333. }
  334. }
  335. }
  336. });
  337. button_multiplication.addActionListener(new ActionListener() {
  338. public void actionPerformed(ActionEvent e) {
  339. if (str.equals("")) {}
  340. else {
  341. switch (operator) {
  342. case 0:
  343. num_record = Double.parseDouble(str);break;
  344. case 1:
  345. num_record = num_record + Double.parseDouble(str);break;
  346. case 2:
  347. num_record = num_record - Double.parseDouble(str);break;
  348. case 3:
  349. num_record = num_record * Double.parseDouble(str);break;
  350. case 4:
  351. num_record = num_record / Double.parseDouble(str);break;
  352. case 5:break;
  353. }
  354. show_str = show_str + text_show.getText() + "*";
  355. text_show1.setText(show_str);
  356. str="";
  357. text_show.setText("");
  358. operator=3;
  359. }
  360. }
  361. });
  362. button_division.addActionListener(new ActionListener() {
  363. public void actionPerformed(ActionEvent e) {
  364. if (str.equals("")) {}
  365. else {
  366. switch (operator) {
  367. case 0:
  368. num_record = Double.parseDouble(str);break;
  369. case 1:
  370. num_record = num_record + Double.parseDouble(str);break;
  371. case 2:
  372. num_record = num_record - Double.parseDouble(str);break;
  373. case 3:
  374. num_record = num_record * Double.parseDouble(str);break;
  375. case 4:
  376. num_record = num_record / Double.parseDouble(str);break;
  377. case 5:break;
  378. }
  379. }
  380. show_str = show_str + text_show.getText()+"/";
  381. text_show1.setText(show_str);
  382. str="";
  383. text_show.setText("");
  384. operator=4;
  385. }
  386. });
  387. button_equal.addActionListener(new ActionListener() {
  388. public void actionPerformed(ActionEvent e) {
  389. if (str.equals("")) {}
  390. else {
  391. switch (operator) {
  392. case 0:
  393. num_record = Double.parseDouble(str);break;
  394. case 1:
  395. num_record = num_record + Double.parseDouble(str);break;
  396. case 2:
  397. num_record = num_record - Double.parseDouble(str);break;
  398. case 3:
  399. num_record = num_record * Double.parseDouble(str);break;
  400. case 4:
  401. num_record = num_record / Double.parseDouble(str);break;
  402. case 5:break;
  403. }
  404. }
  405. show_str="";
  406. //输出显示
  407. text_show1.setText("");
  408. if(num_record-(int)num_record==0){
  409. text_show.setText(""+(int)num_record);
  410. }
  411. else{//保留总共15位数字,确保显示框能装下
  412. if((""+num_record).length()>15){
  413. text_show.setText((""+num_record).substring(0,15));
  414. }
  415. else{
  416. text_show.setText(""+num_record);
  417. }
  418. }
  419. operator=5;
  420. }
  421. });
  422. }
  423. public void setClear(){//清除
  424. num_record=0;
  425. operator=0;
  426. count_point=0;
  427. str="";
  428. text_show.setText("");
  429. show_str="";
  430. text_show1.setText("");
  431. }
  432. public static void main(String args[]) {
  433. new Calculator2("计算器v1.02");
  434. }
  435. }

java计算器 图形用户界面 升级版 v1.02的更多相关文章

  1. java计算器 图形用户界面 精简版

    package com.rgy.entity; import java.awt.*; import java.awt.event.*; @SuppressWarnings("serial&q ...

  2. java GUI(图形用户界面)

    GUI Graphical User Interface(图形用户接口). 用图形的方式,来显示计算机操作的界面,这样更方便更直观. CLI Command line User Interface ( ...

  3. 借助WindowBuilder插件轻松完成JAVA图形用户界面编辑

    如果以纯代码的形式进行JAVA的图形用户界面编辑,将是一件非常痛苦的事,博主在学习过程中发现了JAVA GUI编辑神器——WindowBuilder,提供可视化的编辑界面,控件的添加.排版只需使用鼠标 ...

  4. 【计项02组01号】Java版图形界面计算器

    Java版图形界面计算器1.0版本 项目分析[1.0] 组成部分 代码结构 (1)窗口的创建 在<JDK 核心 API>中我们提到,创建一个窗口需要使用 JFrame 类.在本实验中,我们 ...

  5. java第八节 GUI/图形用户界面

    /* *第8讲 GUI/图形用户界面 * AWT的基础知识 * GUI全称是Graphical User Interface,即图形用户界面 * JDK中提供了AWT和Swing两个包,用于GUI程序 ...

  6. 黑马程序员——【Java基础】——GUI(图形用户界面)

    ---------- android培训.java培训.期待与您交流! ---------- 一.概述 1.GUI(GraphicalUser Interface):又称图形用户界面,是计算机用户与计 ...

  7. 抽象窗口工具包AWT (Abstract Window Toolkit) 是 API为Java 程序提供的建立 图形用户界面

    抽象窗口工具包AWT (Abstract Window Toolkit) 是 API为Java 程序提供的建立 图形用户界面GUI (Graphics User Interface)工具集,AWT可用 ...

  8. AWT是Java基础类 (JFC)的一部分,为Java程序提供图形用户界面(GUI)的标准API

    抽象窗口工具包 (Abstract Windowing Toolkit) (AWT)是Java的平台独立的窗口系统,图形和用户界面器件工具包. AWT是Java基础类 (JFC)的一部分,为Java程 ...

  9. Java图形用户界面编程

    1.Java图形用户界面编程概述 JavaAPI中提供了两套组件用于支持编写图形用户界面:AWT(抽象窗口包)和Swing 2.  容器(Container):重量级容器和轻量级容器(一个容器可以放置 ...

随机推荐

  1. rabbitmq queue_declare arguments参数注释

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_26656329/article/details/77891793说明官方文档 在创建queue ...

  2. SQL - 根据天来分组比较

    SELECT COUNT(*) FROM (SELECT WeixinUserID,CONVERT(varchar(100),CreateTime, 23) AS DT FROM SiteVisite ...

  3. [转载]ASP.NET伪静态页面的实现和伪静态在IIS7.0中的配置

    ASP.NET伪静态 UrlRewrite(Url重写) 实现和配置 最近在写一个CMS的内容管理系统,需要用到一个伪静态方面的方法,在网上找了一下这方面的资料,现将这方面的资源记录一下. 本机环境: ...

  4. linux多行注释

    1.多行注释:   1. 首先按esc进入命令行模式下,按下Ctrl + v,进入列(也叫区块)模式;   2. 在行首使用上下键选择需要注释的多行;   3. 按下键盘(大写)“I”键,进入插入模式 ...

  5. 【python3】基于 qq邮箱的邮件发送

    脚本内容: #!/usr/bin/python3 # -*- coding: UTF-8 -*- import smtplib from email.mime.text import MIMEText ...

  6. 云计算设计模式(二十一)——Sharding分片模式

    云计算设计模式(二十一)——Sharding分片模式 将一个数据存储到一组水平分区或碎片.存储和访问大量数据时,这个模式可以提高可扩展性. 背景和问题 由一个单一的服务器托管的数据存储区可能会受到以下 ...

  7. 【Redis使用系列】使用Redis做防止重复提交

    前言 在平时的开发中我们都需要处理重复提交的问题,避免业务出错或者产生脏数据,虽然可以通过前端控制但这并不是可以完全避免,最好的方式还是前后端均进行控制,这样的话就可以更有效,尽可能全面的去减少错误的 ...

  8. C和C++书籍推荐

    http://bestcbooks.com/recommend/most-influential-book/ http://www.ruanyifeng.com/blog/2011/09/c_prog ...

  9. linux下压缩和解压

    .tar 解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)———————————————.gz解压1:gun ...

  10. MySQL优化之SQL耗时瓶颈 SHOW profiles

    1.首先查看是否开启profiling功能 SHOW VARIABLES LIKE '%pro%'; 或者 SELECT @@profiling; 2.开启profiling SET profilin ...