大家好,我是成都[LD],博客四年前就申请了,一直没打理,最近正好有时间,遂萌生了写技术博客的念头。我不得不感慨现在新技术更新很快,一不小心,就感觉自身就Out了。记得一年前,当时我也是在51CTO上了解到NoSQL和Hadoop这样的信息,当时就简单觉得很新奇,没想到一年之后发展如此迅速~~当然我这样说,并不是叫大家去追寻新技术,最根本的还是基础打牢靠,休息的时候多去了解下最新的IT动态、学习下前辈高手的一些技能~~打铁还需自身硬嘛!

我写博客的目的:一来是为了促进自身的进步,二来是为了希望与更多的人进行技术上的交流,第三嘛,嘿嘿,你懂的!

好了,言归正传。今天写我的第一篇博文,主要教大家使用SWT开发简易计算器。在这里我简单的介绍下SWT(Standard Widget Toolkit),关于SWT详细的资料请大家自主查阅。如果你用过Eclipse,知道Eclipse使用JAVA开发的,并且用AWT/SWing做过JAVA桌面应用的开发,你一定会为Eclipse的界面惊叹,同样是JAVA开发,结果界面效果完全不一样,这是为什么?因为Eclipse使用的是SWT开发,而SWT直接调用了操作系统的图形库,从而使得Java应用程序的Look & Feel 与操作系统的习惯完全一致。好了SWT简单介绍到这。下面主要介绍如何使用SWT开发简易计算器。

开发环境:Windows XP、Eclipse(Kepler)、JDK1.7。

这里我们采用Eclipse作为我们开发计算器的开发工具,当然你也可以采用其他Eclipse、JDK版本。如果你对SWT开发不太熟悉的话,建议下载SWT Designer的插件。我这里已经装了SWTDesigner,于是我的New Project里面就直接可以新建SWT/JFace的工程。如下图所示:

新建了SWT工程之后,我们仿照Windows自带的计算器来写,如下图所示

首先我们新建Calculator.java,这个类作为窗口启动类package ld.calculator;

import org.eclipse.swt.SWT;

import org.eclipse.swt.graphics.Color;

import org.eclipse.swt.layout.GridData;

import org.eclipse.swt.layout.GridLayout;

import org.eclipse.swt.widgets.Button;

import org.eclipse.swt.widgets.Composite;

import org.eclipse.swt.widgets.Display;

import org.eclipse.swt.widgets.Label;

import org.eclipse.swt.widgets.Shell;

/**

*

* @author LD

*

*/

public class Calculator{

protected Shell shell;

/**

* Launch the application.

* @param args

*/

public static void main(String[] args) {

try {

Calculator window = new Calculator();

window.open();

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* Open the window.

*/

public void open() {

Display display = Display.getDefault();

createContents();

shell.pack();

shell.open();

while (!shell.isDisposed()) {

if (!display.readAndDispatch()) {

display.sleep();

}

}

}

/**

* Create contents of the window.

*/

protected void createContents() {

shell = new Shell();

shell.setText("计算器");

GridLayout gridLayout = new GridLayout();//创建网格布局对象

gridLayout.numColumns = 3; //设置网格布局列数为3

gridLayout.makeColumnsEqualWidth=true; //强制列宽相等

shell.setLayout(gridLayout); //将shell设置为指定的网格布局式样

//创建数字显示框

GridData gridData = new GridData(GridData.FILL_HORIZONTAL);//GridData是指定子控件的信息

Label label = new Label(shell,SWT.RIGHT|SWT.BORDER);

gridData.heightHint = 20;//初始高度为20

gridData.horizontalSpan = 3;//跨三列

label.setLayoutData(gridData);

label.setText("0.");

label.setBackground(Color.win32_new(shell.getDisplay(),0xFFFFFF));//设置背景颜色为白色

//创建Backspace按钮

gridData = new GridData(GridData.FILL_HORIZONTAL);

Button button1 = new Button(shell, SWT.PUSH);

button1.setLayoutData(gridData);

button1.setText("Backspace");

//创建CE按钮

gridData = new GridData(GridData.FILL_HORIZONTAL);

Button button2 = new Button(shell, SWT.PUSH);

button2.setLayoutData(gridData);

button2.setText("CE");

//创建C按钮

gridData = new GridData(GridData.FILL_HORIZONTAL);

Button button3 = new Button(shell, SWT.PUSH);

button3.setLayoutData(gridData);

button3.setText("C");

//以下代码为创建数字按钮

Composite composite = new Composite(shell,SWT.NONE);

NumberButtonCreater numberButtonCreater = new NumberButtonCreater();

numberButtonCreater.createNumberButton(composite);

}

}

NumberButtonCreater.java用于创建计算器下半部分的按钮package ld.calculator;

import org.eclipse.swt.SWT;

import org.eclipse.swt.layout.GridData;

import org.eclipse.swt.layout.GridLayout;

import org.eclipse.swt.widgets.Button;

import org.eclipse.swt.widgets.Composite;

/**

* 计算器创建数字按钮

* @author LD

*

*/

public class NumberButtonCreater {

private final String[] signs = new String[]{

"7","8","9","/","sqrt","4","5","6","*"

,"%","1","2","3","-","1/x","0","+/-",".","+","="};//定义按钮数字数组

private final int SPLIT_NUM = 5;//每5个按钮一行

public void createNumberButton(Composite composite){

GridLayout gridLayout = new GridLayout(SPLIT_NUM,true);

gridLayout.marginWidth = 0;//设置按钮距离父控件的左边距为0

gridLayout.marginHeight = 0;//设置按钮距离父控件的右边距为0

composite.setLayout(gridLayout);

GridData gridData = new GridData(GridData.FILL_HORIZONTAL);

gridData.horizontalSpan = 3;

composite.setLayoutData(gridData);

int length = signs.length;

Button button = null;

for(int i=0;i

button = new Button(composite,SWT.PUSH);

gridData = new GridData(GridData.FILL_BOTH);

button.setLayoutData(gridData);

button.setText(signs[i]);

}

}

}

然后我们运行该程序,就得到如下界面:

OK,大功告成,后续实现计算器功能的部分就不赘述了~~高手勿喷~~

如果有童鞋看不懂布局的话,可以去查查SWT布局相关资料~~如果还是看不懂,请静待下次再讲SWT布局相关知识!!

java swt 计算器_JAVA开发简易计算器界面-SWT相关推荐

  1. java编写简易计算器_java实现简易计算器功能

    本文为大家分享了java实现简易计算器功能,具体内容如下 题目: 编写一个模拟计算器的程序.在面板中添加一个文本框(显示按键及运算结果). 10个数字按钮(0~9).4个运算按钮(加.减.乘.除).一 ...

  2. java awt 简单计算器,JAVA Swing 开发简易计算器(上)

    开发一个简易的计算器我们主要分为两大部分:图形界面设计与具体功能实现.这篇文章讲图形界面设计,下篇讲具体功能实现. 代码下载:https://github.com/taifus/Java_Calcul ...

  3. Vue框架入门(一)---开发简易计算器

    涉及知识: HTML.CSS.JavaScript Vue(v-for.v-model.v-on.v-clock) Gitee仓库 :https://gitee.com/vgtime123/Calcu ...

  4. java实现计算器_Java 实现简单计算器

    最后一次更新于2019/07/08 效果演示图 功能与流程 要制作一个简易计算器,首先你要清楚GUI里要显示什么: 结果显示框 0-9的数字 删除功能 清楚功能 搜寻历史记录功能 计算结果的功能 括号 ...

  5. android 坐标点计算器,Android实现简易计算器

    开之前我还是想问问老师,为什么一定要星期天前交作业呢?由于条件限制,作品是赶出来的不是细细琢磨出来的.所以在这版apk中功能较为简易,有待后期再不断更新与优化 总体效果图如下 布局activity_m ...

  6. java gui 结构_java gui教学图形界面的层次结构.ppt

    java gui教学图形界面的层次结构.ppt 还剩 13页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: 事件 ...

  7. php实现自动计算器,PHP实现简易计算器功能

    本文实例为大家分享了PHP实现简易计算器的具体代码,供大家参考,具体内容如下 老规矩,先上GIF动态图,看个效果,如果符合你的项目或者确定你要了解的内容,再往下看吧: // 判断post是否传过来su ...

  8. 单片机加减法计算器_51单片机简易计算器程序 实现数字的加减乘除运算

    单片机源程序如下: #include //头文件 #define uint unsigned int #define uchar unsigned char sbit lcden=P1^1; //LC ...

  9. html js制作计算器,JavaScript制作简易计算器

    .button { width: 55px; height: 20px; } 购物简易计算器 第一个数 第二个数 计算结果 var num_1=document.getElementById(&quo ...

最新文章

  1. 基于Dijkstra算法的武汉地铁路径规划!(附下载)
  2. eureka源码:EurekaTransport类用于client与server进行交互
  3. bootstrap思考一
  4. 医疗大数据:商业保险、移动医疗的崛起,正在形成闭环(二)
  5. JAVA 程序执行进行计时,用于验证程序执行的时间
  6. java oracle sql 参数_oracle pl/sql之在java中调用带有输入输出参数的oracle存储过程...
  7. 【Linux】free命令查询服务器内存信息
  8. html大气网页模板,HTML蓝色大气形式扁平企业官网网页模板代码
  9. elasticsearch中集群选举中的ping源码解析
  10. intellij jsp 中文乱码
  11. java中json转对象_Java开发中json使用,各对象与json相互转换
  12. chrome浏览器 json插件【WEB前端助手】
  13. ESP8266开发之旅 进阶篇⑪ 深入了解 Esp8266 Https访问
  14. [小知识] 获取浏览器UA标识
  15. matlab中设置数据长度,excel表格长宽设置/如何检查excel单元格内数字长度
  16. ubuntu14.04+windows双系统安装Ros indigo 与pioneer (测试的是3at和3dx) 键盘控制
  17. 电竞计算机专业,电竞专业主要学什么的
  18. 设计没素材没灵感,这些网站可以帮你快速找到你需要的照片
  19. sounds音标软件Android,Sounds: Pronunciation App FREE
  20. 压电水听器原理/水声传感器工作原理

热门文章

  1. hdu 5708 Alice and Bob(尼姆博弈)
  2. Mysql数据库高CPU问题定位和优化
  3. 常用端口及端口关闭方法
  4. 面试的时候被问如何看待加班,该怎么回答?
  5. 如何利用Intellij Idea搭建python编译运行环境
  6. heroku部署python-docker的web服务器
  7. 【PHP开源产品】Ecshop的商品筛选功能实现分析之一(主要对category.php进行分析)
  8. 标准的产品设计工作流程
  9. excel部分网格线不见了_卖小吃做的Excel图表,为什么也这么漂亮
  10. [EDI 案例] 村田/muRata EDI实施案例