前言

这是博主学习完Swing后,使用Swing实现的一个简单计算器。做简单的计算器的目的是将最近所学的Swing给应用起来,写博文介绍的目的是记录做这个计算器的思路。下面将分为界面和事件两部分介绍。计算器的详细代码将在文末附上链接。

计算器的界面


菜单

使用到的控件类主要有JMenuBar JMenu JMenuItem JRadioButtonMenuItem ButtonGroup。JMenuBar指的就是一个菜单条里面要装JMenu也就是上图的编辑、查看、帮助菜单。但是我们最终操作的单元还不是菜单,而是菜单项,也就是编辑下面的复制、粘贴等。菜单项有像复制粘贴这样的普通菜单项,也有单选菜单项下拉菜单列表等。使用ButtonGroup的目的是为了使查看下面的单选菜单项每次只能选择一个。下图是计算器中的菜单内容:



显示框和输入框

界面的整体布局是使用BorderLayout,显示框和输入框使用的组件是JTextField,是放置在NORTH方位,前面博文介绍过布局得知BorderLayout布局有东南西北中五个方位但是每个方位只能放置一个组件。所以使用JPanel容器将两个组件装在一起,然后将JPanel容器放在界面的北部

按钮区

按钮区使用的组件是JButton,使用了GridBagLayout布局。GridBagLayout是一种灵活的网格布局方式,使用GridBagConstraints可以指定每个组件的所占网格的大小以及容器扩大时组件变化大小等。

	//设置按钮区的布局
private void setButtonsLayout() {
GridBagLayout gbLayout = new GridBagLayout();
buttons.setLayout(gbLayout); GridBagConstraints gbCons = new GridBagConstraints();
gbCons.fill = GridBagConstraints.BOTH;
gbCons.insets = new Insets(5, 5, 5, 5);
gbCons.weightx = 4; //组件纵向比例为3:4
gbCons.weighty = 3;
JButton jbt = null; jbt = new JButton("Backspace");
gbCons.gridx = 1;
gbCons.gridy = 0;
gbCons.gridwidth = 2; //横向占两格
buttons.add(jbt,gbCons); jbt = new JButton("CE");
gbCons.gridx = 3;
gbCons.gridy = 0;
gbCons.gridwidth = 2; //横向占两格
buttons.add(jbt, gbCons); jbt = new JButton("C");
gbCons.gridx = 5;
gbCons.gridy = 0;
gbCons.gridwidth = 1;
buttons.add(jbt, gbCons); String[] butsStr = {"MC","7","8","9","/","MR","4","5","6","*","MS","1","2","3","-","M+","0","+/-",".","+"};
int k=0;
for(int i=1;i<5;i++) {
for(int j=0;j<5;j++) {
gbCons.gridx = j;
gbCons.gridy = i;
buttons.add(new JButton(butsStr[k]), gbCons);
k++;
}
} jbt = new JButton("sqrt");
gbCons.gridx = 5;
gbCons.gridy = 1;
buttons.add(jbt, gbCons); jbt = new JButton("1/x");
gbCons.gridx = 5;
gbCons.gridy = 2;
buttons.add(jbt, gbCons); jbt = new JButton("=");
gbCons.gridheight = 2;
gbCons.gridx = 5;
gbCons.gridy = 3;
buttons.add(jbt, gbCons);
}

结果显示列表

结果显示列表使用的组件类为JListDefaultListModel。JList是列表容器,使用DefaultListModel想列表容器中添加列表项。

计算器的事件

计算器的事件主要为按钮区按钮的点击事件(点击数字按钮运算按钮后结果计算)以及结果显示列表的选择事件和一个右击弹出菜单的鼠标右击事件。

小结

整个计算器的运算规则是仿造win10系统自带的计算器实现的,其中sqrt运算没有实现,以及+/-符号替换没有实现,有待补充,其余基本的还是已经实现。事件的处理机制,在AWT/Swing——事件处理中已经介绍过,这里我就不再重复说啦。关于界面和事件是如何设置的代码没有详细分析,下面会贴上源码网址,详细的解释都在代码注释中。

简单计算器源码地址:https://github.com/Sakuraxx/SimpleCalculator

Swing——简单的计算器的更多相关文章

  1. 01.Java 开发简单的计算器

    难度为一般,适合具有 Java 基础和 Swing 组件编程知识的用户学习一. 实验介绍1.1 实验内容本次实验利用Java开发一个可以进行简单的四则运算的图形化计算器,会使用到 Java Swing ...

  2. js制作简单的计算器

    学着做了一个简单的计算器!记录记录!哈哈 <!DOCTYPE html> <html> <head> <title>简单的计算器</title&g ...

  3. 留念 C语言第一课简单的计算器制作

    留念 C语言第一课简单的计算器制作 学C语言这么久了.  /* 留念 C语言第一课简单的计算器制作 */   #include<stdio.h>  #include<stdlib.h ...

  4. jsp学习---使用jsp和JavaBean实现超简单网页计算器

    一.需求 如题,用jsp实现一个超简单的网页计算器. 二.实现 1.效果图 1)初始界面: 2)随便输入两个数进行相乘: 3)当除数为零时提示报错: 2.代码 Calculator.java pack ...

  5. JS实现一个简单的计算器

    使用JS完成一个简单的计算器功能.实现2个输入框中输入整数后,点击第三个输入框能给出2个整数的加减乘除.效果如上: 第一步: 创建构建运算函数count(). 第二步: 获取两个输入框中的值和获取选择 ...

  6. javascript 简单的计算器

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx. ...

  7. 教学项目之-通过Python实现简单的计算器

    教学项目之-通过Python实现简单的计算器   计算器开发需求 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/ ...

  8. HDU1237 简单的计算器 【堆】+【逆波兰式】

    简单的计算器 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  9. 使用qt制作一个简单的计算器

    前言:今天使用qt制作了一个很简单的计算器,觉得挺有意思的,所以在这里跟大家分享一下. 这里先跟大家说说使用到的函数: 一.槽连接函数 connect(信号发送者,发送的信号,信号接收者,信号接收者的 ...

随机推荐

  1. Git Log描述乱码问题解决方法

    在git bash 中执行以下命令:git config --global core.quotepath off git config --global --unset i18n.logoutpute ...

  2. node06

    1.数据库: server端:数据存在 client端:管理工具,node mysql内有两个单位: 库:类似文件夹,容纳表 表:存储数据 行:一条数据 列(字段,域):一个数据项 主键:数据的唯一标 ...

  3. Java_流程控制

    介绍: java的流程控制结构有三种:顺序.选择.循环            顺序结构,就是从头到尾依次执行每条语句的操作. 选择结构,也称条件控制,是指根据表达式的值有选择的执行. 循环结构,也称回 ...

  4. 0.Git介绍

    版本控制工具:SVN,Git Git是分布式版本控制系统,SVN是集中式的版本控制系统.(借一位网友的图以示区别) SVN只有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过 ...

  5. 36ArcGIS API for JavaScript3.X 系列加载天地图(经纬度)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  6. Session Cookie介绍和使用

    Cookie机制 Cookie机制 Cookie是服务器存储在本地计算机上的小块文本,并随每个请求发送到同一服务器. IETF RFC 2965 HTTP状态管理机制是一种通用的cookie规范. W ...

  7. Ajax级联选择框

    Ajax级联选择框 级联选择框常用与比较负责的网页开发,例如实现的商品添加页面中,需要选择商品的分类,而分类信息又有层次,例如大分类和小分类就是两层级联,在用户选择商品所属大类时,所属小类的内容需要根 ...

  8. 关于条件语句和 a && b

    learn from javascript cookbook if (element == 'ab') array[index] = "**"; 该语句 等价于 if (eleme ...

  9. vue项目实践-添加express-mockjs进行数据模拟

    mock-server 在新项目开始的时候,后端框架还没有,前端就有能够自己操作的模拟数据的服务是可以有的 express-mockjs 是楼教主结合 express+mock-lite 造的一个轮子 ...

  10. Android OpenSL ES 开发:OpenSL ES利用SoundTouch实现PCM音频的变速和变调

    缘由 OpenSL ES 学习到现在已经知道 OpenSL ES 不仅能播放和录制PCM音频数据,还能改变声音大小.设置左声道或右声道播放.还能变速播放,可谓是播放音频的王者.但是变速有一点不好的就是 ...