[www.infoshare.cc]使用SWT插件制作计算器

本文介绍如何使用SWT插件创建一个简单的计算器。主要涉及按钮、对话框、菜单等元素的创建及事件监听,实现数字、运算符输入、退格、清除等功能。
摘要由CSDN通过智能技术生成

import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.wb.swt.SWTResourceManager;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.ArmListener;
import org.eclipse.swt.events.ArmEvent;




public class Calculator {
/****************************以下为属性的定义*********************************/
protected static String Var1 = null,Var2=null;
static double Var3,Var4;
private static Text txt1;//定义文本框
private static Text txt2;
static boolean p=true,p1=false;//定义标志位
static int i=1,j=0;
protected static String temp=null;
protected static int k;
protected static int k1;
private static char s[]=new char[100];//定义两个数组,数组必须定义大小
private static char s1[]=new char[100];
/****************************以下为主函数******************************************/
public static void main(String[] args) {
Display display = Display.getDefault();//创建一个display对象。
final Shell shlCalculator = new Shell();//shlCalculator是程序的主窗体

shlCalculator.setImage(SWTResourceManager.getImage("E:\\workspace\\MyCalculator\\icon\\1376920_092015044_2.jpg"));
shlCalculator.setSize(469, 351);
shlCalculator.setText("Calculator");

txt1 = new Text(shlCalculator, SWT.BORDER | SWT.RIGHT);//深陷型按钮
txt1.setBounds(32, 24, 396, 40);
txt1.setText("0");

txt2 = new Text(shlCalculator, SWT.BORDER | SWT.READ_ONLY | SWT.CENTER);//深陷型按钮
txt2.setBounds(348, 74, 80, 23);
/****************************以下为退格键,CE和C的设置*********************************/
Button btnBackspace = new Button(shlCalculator, SWT.NONE);//退格键Backspace
btnBackspace.addMouseListener(new MouseAdapter() {
@Override
public void mouseUp(MouseEvent e) {
Var1=txt1.getText();
i=1;
p=true;
k=Var1.length()-1;
k1=0;
for(j=0;j<Var1.length();j++)
{
s[k]=Var1.charAt(j);
k--;
}
txt1.setText("");
for(j=Var1.length()-1;j>=1;j--)
{
s1[k1]=s[j];
txt1.setText(txt1.getText()+s1[k1]);
k1++;
}
if(txt1.getText()=="")
{
txt1.setText("0");
}
}
});
btnBackspace.setText("\u2190");
btnBackspace.setFont(SWTResourceManager.getFont("华康娃娃体W5(P)", 16, SWT.BOLD));
btnBackspace.setBounds(32, 103, 73, 27);
//首先长度减一,还有当为空时,设置文本框初始值为空


Button btnCE = new Button(shlCalculator, SWT.NONE);
btnCE.addMouseListener(new MouseAdapter() {
@Override
public void mouseUp(MouseEvent e) {
i=1;
p=true;
txt1.setText("0");
}
});
btnCE.setFont(SWTResourceManager.getFont("华康娃娃体W5(P)", 16, SWT.NORMAL));
btnCE.setBounds(111, 103, 73, 27);
btnCE.setText("CE");
//清除输入(CE)

Button btnC = new Button(shlCalculator, SWT.NONE);
btnC.addMouseListener(new MouseAdapter() {
@Override
public void mouseUp(MouseEvent e) {
txt1.setText("0");
i=1;
p=true;
Var1="0";
txt2.setText("");
}
});
btnC.setFont(SWTResourceManager.getFont("华康娃娃体W5(P)", 16, SWT.NORMAL));
btnC.setBounds(190, 103, 73, 27);
btnC.setText("C");
//清除键(C)清除数据,所有数据、算式都清除,归零复位

/****************************以下为小数点和数字键0-9的设置*********************************/
final Button btnPoint = new Button(shlCalculator, SWT.NONE);
btnPoint.addMouseListener(new MouseAdapter() {
@Override
public void mouseUp(MouseEvent e) {
if(i==1)
{
if(Double.parseDouble(txt1.getText())==0)
{
txt1.setText(txt1.getText()+btnPoint.getText());
p=false;
i++;
}
else
{
txt1.setText(txt1.getText()+btnPoint.getText());
p=true;
i++;
}
}
}
});
btnPoint.setFont(SWTResourceManager.getFont("华康娃娃体W5(P)", 16, SWT.NORMAL));
btnPoint.setText(".");
btnPoint.setBounds(190, 235, 73, 27);
//如果i=1,文本框加一个小数点,小数点的标志位加1,令p=false;相反不再加小数点p=true

final Button btnOp0 = new Button(shlCalculator, SWT.NONE);
btnOp0.setForeground(SWTResourceManager.getColor(SWT.COLOR_BLACK));
btnOp0.addMouseListener(new MouseAdapter() {
@Override
public void mouseUp(MouseEvent e) {
if(Double.parseDouble(txt1.getText())==0&&p)
{
txt1.setText(btnOp0.getText());
}
else
txt1.setText(txt1.getText()+btnOp0.getText());
}
});
btnOp0.setFont(SWTResourceManager.getFont("华康娃娃体W5(P)", 16, SWT.NORMAL));
btnOp0.setBounds(32, 235, 152, 27);
btnOp0.setText("0");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值