Java SWT 做计算器。
java -- swt - - 计算器
环境搭建
安装java、eclipse、以及对应的swt插件。
开始工程
建立工程:
在java下建立一个在其他 —- WindowsBuilder —- SWTdesigner —- SWT/JFrame Java Project。建立好以后运行将得到一个swt窗口。设计界面 :
点击代码下的Design选项卡 —- 拖动一个布局到窗口里 —- 然后自定义界面
如果没有发现Design选项卡的话在代码编辑窗口内右击 选择打开方式为: Windows Builder edit码代码 :
获取框里的文本:text.getText();
设置文本:text.setText();
很简单的函数。
Question & BUG
TODO 处理按下 1 后显示 01 的问题
FIXME 按下后变为0.1
FIXME 直接按下 . 的话前面没有变为 0 .
TODO 字符串 转 double
TODO 处理浮点数运算后结果多余显示的“.0”
直接复制代码或把代码放到不同的计算器中运行的话可能hi出现一大片红色的错误,是因为在新的环境中没有把需要的包给导入。
需要在项目上右击 —- 属性 —- 然后一步步把需要的包导入,很多简单,不懂就多试试。
在java中运算浮点数的话会得不到准确的值是因为计算器中是用二进制来存数据的,所以一个小数在计算机中会是无限循环的。
要处理这个BUG的话就需要使用java的BigDecimal类。
怎么把左上角的图标自定义?
——–在Design里点击窗口、在左边的属性框里找到Image。
怎么设置文本框里的文本出现在后边?
——也是在属性框里找到Style 找到 align,设置。
怎么把工作空间导入eclipse?
——–在工作空间那里(如果没有这个窗口的话,在窗口那里找到它,把它显示出来)右击导入 —- General —- 现有项目到工作空间 —- 选择根目录 —- 选项目文件夹的上层文件夹 —- Finish
package com.java; * 计算器 import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Text; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.wb.swt.SWTResourceManager; public class Test { protected Shell shell; private Text text; private int op = 0; private double num1; private double num2; private static final int op_ADD =1; private static final int op_SUB =2; private static final int op_MUL =3; private static final int op_DIV =4; /** * Launch the application. * @param args */ public static void main(String[] args) { try { Test window = new Test(); window.open(); } catch (Exception e) { e.printStackTrace(); } } //TODO 把文本设置在文本框的右边:在 text 属性的 style 的 align 里设置。 /** * Open the window. */ public void open() { Display display = Display.getDefault(); createContents(); shell.open(); shell.layout(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } } /** * Create contents of the window. */ protected void createContents() { shell = new Shell(); shell.setImage(SWTResourceManager.getImage("E:\\Design\\nexus4full(96 96)\\circle.png")); shell.setSize(240, 297); shell.setText("SWT Application"); shell.setLayout(new GridLayout(4, false)); text = new Text(shell, SWT.BORDER | SWT.RIGHT); GridData gd_text = new GridData(SWT.FILL, SWT.FILL, true, false, 4, 1); gd_text.heightHint = 36; gd_text.widthHint = 424; text.setLayoutData(gd_text); Button button = new Button(shell, SWT.NONE); button.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { text.setText(text.getText() + "7"); if (text.getText().startsWith("0")){ text.setText ( text.getText().substring ( 1, text.getText().length( ) ) ) ; } } }); GridData gd_button = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1); gd_button.heightHint = 37; gd_button.widthHint = 51; button.setLayoutData(gd_button); button.setText("7"); Button button_1 = new Button(shell, SWT.NONE); button_1.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { text.setText(text.getText() + "8"); if (text.getText().startsWith("0")){ text.setText ( text.getText().substring ( 1, text.getText().length( ) ) ) ; } } }); GridData gd_button_1 = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1); gd_button_1.heightHint = 37; gd_button_1.widthHint = 51; button_1.setLayoutData(gd_button_1); button_1.setText("8"); Button button_2 = new Button(shell, SWT.NONE); GridData gd_button_2 = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1); gd_button_2.heightHint = 37; gd_button_2.widthHint = 51; button_2.setLayoutData(gd_button_2); button_2.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { text.setText(text.getText() + "9"); if (text.getText().startsWith("0")){ text.setText ( text.getText().substring ( 1, text.getText().length( ) ) ) ; } } }); button_2.setText("9"); Button button_10 = new Button(shell, SWT.NONE); GridData gd_button_10 = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1); gd_button_10.widthHint = 46; gd_button_10.heightHint = 40; button_10.setLayoutData(gd_button_10); button_10.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { op = op_ADD; num1 =Double.parseDouble (text.getText() ); text.setText("0"); } }); button_10.setText("+"); Button button_3 = new Button(shell, SWT.NONE); button_3.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { text.setText(text.getText() + "4"); if (text.getText().startsWith("0")){ text.setText ( text.getText().substring ( 1, text.getText().length( ) ) ) ; } } }); GridData gd_button_3 = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1); gd_button_3.heightHint = 37; gd_button_3.widthHint = 51; button_3.setLayoutData(gd_button_3); button_3.setText("4"); Button button_4 = new Button(shell, SWT.NONE); button_4.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { text.setText(text.getText() + "5"); if (text.getText().startsWith("0")){ text.setText ( text.getText().substring ( 1, text.getText().length( ) ) ) ; } } }); GridData gd_button_4 = new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1); gd_button_4.heightHint = 33; button_4.setLayoutData(gd_button_4); button_4.setText("5"); Button button_5 = new Button(shell, SWT.NONE); button_5.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { text.setText(text.getText() + "6"); if (text.getText().startsWith("0")){ text.setText ( text.getText().substring ( 1, text.getText().length( ) ) ) ; } } }); GridData gd_button_5 = new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1); gd_button_5.heightHint = 35; button_5.setLayoutData(gd_button_5); button_5.setText("6"); Button button_11 = new Button(shell, SWT.NONE); button_11.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { op = op_SUB ; num1 =Double.parseDouble (text.getText() ); //num1 = Integer.parseInt ( text.getText() ); text.setText("0"); } }); button_11.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1)); button_11.setText("-"); Button button_6 = new Button(shell, SWT.NONE); button_6.setFont(SWTResourceManager.getFont("微软雅黑", 11, SWT.NORMAL)); button_6.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { //TODO 处理按下 1 后显示 01 的问题 text.setText (text.getText() + "1"); if (text.getText().startsWith("0")){ text.setText ( text.getText().substring (1, text.getText().length( ) ) ) ; } //FIXME 按下后变为0.1 // else if(text.getText().startsWith("0.")){ // text.setText ( text.getText() +"1") ; // } } }); GridData gd_button_6 = new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1); gd_button_6.heightHint = 37; gd_button_6.widthHint = 51; button_6.setLayoutData(gd_button_6); button_6.setText("1"); Button button_7 = new Button(shell, SWT.NONE); button_7.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { text.setText(text.getText() + "2"); if (text.getText().startsWith("0")){ text.setText ( text.getText().substring ( 1, text.getText().length( ) ) ) ; } } }); button_7.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1)); button_7.setText("2"); Button button_8 = new Button(shell, SWT.NONE); button_8.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { text.setText(text.getText() + "3"); if (text.getText().startsWith("0")){ text.setText ( text.getText().substring ( 1, text.getText().length( ) ) ) ; } } }); button_8.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1)); button_8.setText("3"); Button button_12 = new Button(shell, SWT.NONE); button_12.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { op = op_MUL; num1 =Double.parseDouble (text.getText() ); //num1 = Integer.parseInt ( text.getText() ); text.setText("0"); } }); button_12.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1)); button_12.setText("\u00D7"); Button btnC = new Button(shell, SWT.NONE); btnC.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { text.setText("0"); } }); btnC.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1)); btnC.setText("C"); Button button_9 = new Button(shell, SWT.NONE); button_9.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { text.setText(text.getText() + "0"); // if (text.getText().startsWith("0")){ // text.setText ( text.getText().substring ( 1, text.getText().length( ) ) ) ; // } } }); GridData gd_button_9 = new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1); gd_button_9.heightHint = 37; gd_button_9.widthHint = 51; button_9.setLayoutData(gd_button_9); button_9.setText("0"); Button button_14 = new Button(shell, SWT.NONE); button_14.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { text.setText (text.getText() + "."); //FIXME 直接按下 . 的话前面没有变为 0 . } }); button_14.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1)); button_14.setText("."); Button button_13 = new Button(shell, SWT.NONE); button_13.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { op = op_DIV; num1 =Double.parseDouble (text.getText() ); //num1 = Integer.parseInt( text.getText() ); text.setText("0"); } }); button_13.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1)); button_13.setText("\u00F7"); Button button_15 = new Button(shell, SWT.NONE); button_15.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { double result ; //TODO 字符串 转 double num2 =Double.parseDouble ( text.getText() ); switch ( op) { case op_ADD: result = num1+num2; text.setText( result +""); //FIXME java中计算浮点数的时候不精确,如:0.3 * 3 //需要使用 java 的大数类 BigDecimal。 //TODO 处理浮点数运算后结果多余显示的“.0” if (text.getText().endsWith("0")) text.setText(text.getText().substring(0,text.getText().length()-2)); break; case op_SUB: result = num1 - num2; text.setText( result +""); if (text.getText().endsWith("0")) text.setText(text.getText().substring(0,text.getText().length()-2)); break; case op_MUL: result = num1 * num2; text.setText( result +""); if (text.getText().endsWith("0")) text.setText(text.getText().substring(0,text.getText().length()-2)); break; case op_DIV: result = num1 / num2; text.setText( result +""); if (text.getText().endsWith("0")) text.setText(text.getText().substring(0,text.getText().length()-2)); break; default: break; } } }); GridData gd_button_15 = new GridData(SWT.FILL, SWT.FILL, false, false, 4, 1); gd_button_15.heightHint = 34; button_15.setLayoutData(gd_button_15); button_15.setText("="); } }
接下来要做的就是把它给打包,让他脱离eclipse运行了,现在还什么都不懂,加油!!
eclipse --> extport --> runable jar --> ....--> finish.
新建一个bat文件,编辑--> java -jar Calcultor.jar.
用bat的方式来运行。
参考:
http://scorpiomiracle.iteye.com/blog/630358
Java SWT 做计算器。的更多相关文章
- java SWT/Rap 计算器版本2(键盘鼠标兼容)
package cn.lesaas.nof.rwtswt.ui.dialog; import java.math.BigDecimal; import org.eclipse.swt.SWT;impo ...
- Java 浅做计算器
package www.nihao; import java.util.Scanner; public class counter { public static void main(String[] ...
- paip.java swt 乱码问题解决
paip.java swt 乱码问题解决 看累挂,Dfile.encoding是gbk的.. 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专 ...
- java SWT嵌入IE,SafeArray .
java SWT嵌入IE,SafeArray ); // Create a by ref variant Variant variantByRef = new Variant(pVaria ...
- 使用 jquery 的 上传文件插件 uploadify 3.1 配合 java 来做一个简单的文件上次功能。并且在界面上有radio 的选择内容也要上传
使用 jquery 的 上传文件插件 uploadify 3.1 配合 java 来做一个简单的文件上次功能.并且在界面上有radio 的选择内容也要上传 uploadify 插件的 下载和文档地址 ...
- 学java可以做些什么
学java可以做些什么 对于很多新手来说,刚开始接触Java会很迷惘,不知道Java可以做什么.其实Java 可以做的东西太多了,手机游戏.中间件.软件.网站,电脑游戏,以及现在流行的安卓手机app等 ...
- Java课程设计-计算器 郑子杰(201521123021)
1.团队课程设计博客链接 http://www.cnblogs.com/I-love-java/p/7058752.html 2.个人负责模块或任务说明 ①图形界面的初始化 ②图形界面的排版设计 ③主 ...
- 第二次作业利用java语言编写计算器进行四则运算
随着第一次作业的完成,助教 牛老师又布置了第二次作业:用java语言编写一个程序然后进行四则运算用户用键盘输入一个字符来结束程序显示统计结果.一开始看到这个题目我也着实吓了一跳 因为不知道如何下手而且 ...
- Java实现GUI计算器【代码】
这几天用java写了一个计算器程序,开始写的时候原本只是想实现一下GUI(这个是直接读三个字母还是什么“固椅”的发音)界面,熟悉一下Java GUI 编程,为Java期末大作业练练手,本以为代码不会很 ...
随机推荐
- C#设计模式——代理模式(Proxy Pattern)
一.概述在软件开发中,有些对象由于创建成本高.访问时需要与其它进程交互等原因,直接访问会造成系统速度慢.复杂度增大等问题.这时可以使用代理模式,给系统增加一层间接层,通过间接层访问对象,从而达到隐藏系 ...
- 【Unity】13.1 场景视图中的GI可视化
分类:Unity.C#.VS2015 创建日期:2016-05-19 一.简介 在场景视图中设计不同的场景内容时,可以根据需要勾选相关的渲染选项,以便让场景仅显示其中的一部分或者全部渲染效果. 在这些 ...
- C#监控USB接口
该C#代码实现监控USB接口是否有设备接入或拨出,包括多个U盘. using System; using System.IO; using System.Runtime.InteropServices ...
- MongoDB之数据分布式存储
在MongoDB的世界,做数据分布式存储显得非常简单.只要按照前面介绍的 集群搭建 完成就完全具备了数据分布式存储的要求. 在这里分清几个概念:去前面的文章可以找到介绍 1. 复制集 功能是实现数 ...
- 邻接表c源码(构造邻接矩阵,深度优先遍历,广度优先遍历,最小生成树prim,kruskal算法)
graph.c #include <stdio.h> #include <stdlib.h> #include <limits.h> #include " ...
- Python 3.X 实现定时器 Timer,制作抽象的Timer定时器基类
Python 在不依赖第三方库的前提下,对于定时器的实现并不是很完美,但是这不意味着我们无法实现. 阅读了网上的一些资料,得出一些结论,顺手写了一个基类的定时器(Python3) BaseTimer: ...
- linux2.4.18内核定时器的使用
Linux2.4下驱动中定时器的应用 我的内核是2.4.18的.Linux的内核中定义了一个定时器的结构: #include<linux/timer.h> struct timer_lis ...
- 配置了<mvc:resources> 导致以前的controller 无法访问。
解决方案: <mvc:annotation-driven/>
- 「C语言」C输出hello world!系统发生了什么?
本篇文章全部摘抄自学长博客供以后学习: http://efraim.me/2015/12/05/tech-linux-2015-12-05/ 排版因与博客园编辑器不同而稍作修改. 输出hello wo ...
- PlayFramework 1 自定义标签 -- FastTags http://unmi.cc/category/javajee/playframework/
最早是用 HTML 来自定义标签,现在觉得 HTML 写有关逻辑的代码就有点不伦不类了,HTML 里着重是显示代码.前有一篇 PlayFramework 1 模板应用 -- Java 对象扩展 学习 ...