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期末大作业练练手,本以为代码不会很 ...
随机推荐
- Foreach能够循环的本质
我们对foreach循环并不陌生,在C#中我们用得非常多,但是我们是否清楚foreach循环的本质呢? 众所周知,foreach循环能够遍历 数组 ,集合 .但是我们自己定义的一个类是否能够通过fo ...
- jQuery中常用的元素查找方法
$("#myELement") 选择id值等于myElement的元素,id值不能重复在文档中只能有一个id值是myElement所以得到的是唯一的元素 $("div&q ...
- foreach---集合已修改;可能无法执行枚举操作。
小结 : foreach是取只读的,在取的时候数据不能变(包括修改,删除,添加等).要避免这个问题,就应该使用for循环--- 原因: 当用foreach遍历Collection时,如果对Collec ...
- 重大发现Discuz DB层跨库映射关系表名前缀BUG
本文更新:http://www.cnblogs.com/x3d/p/3916198.html 场景: 在Discuz中创建Table模型,但该Table所在库与Discuz不在同一个库. Discuz ...
- PHP学习笔记:等比例缩放图片
直接上代码,imgzip($src,$newwid,$newhei)这个函数带进去的分别是原图片.缩放要求的宽度.缩放的长度.代码都备注了,不懂可以留言哈哈 <?php //压缩图片 缩略图 $ ...
- mysql命令行备份数据库
MySQL数据库使用命令行备份|MySQL数据库备份命令 例如: 数据库地址:127.0.0.1 数据库用户名:root 数据库密码:pass 数据库名称:myweb 备份数据库到D盘跟目录 mysq ...
- 3kb jQuery代码搞定各种树形选择。
自制Jquery树形选择插件. 对付各种树形选择(省市,分类..)90行Jquery代码搞定,少说废话直接上插件代码.稍后介绍使用说明.是之前写的一个插件的精简版. 1.Jquery插件代码 /* * ...
- git version 2.5.0.windows.1中文乱码问题解决方案
UI部分 Options->Text Local:zh_CN,Character set:GBK ~/.GitConfig [gui] encoding = utf-8 [tgit] proje ...
- 胖AP(1602i)与苹果设备之间的问题总结
问题现象: 苹果设备(5GHz)连接不稳定,表现为时断时续,或者加入无线的时候一直加入不进去. 有些2.4GHz设备会在几个AP之间相互跳. 分析: 1. 先说苹果设备,它既支持2.4G 也支持5G, ...
- 高性能文件缓存key-value存储—Memcached
1.高性能文件缓存key-value存储—Redis 2.ASP.NET HttpRuntime.Cache缓存类使用总结 备注:三篇博文结合阅读,简单理解并且使用,如果想深入学习,请多参考文章中给出 ...