java计算器源代码不要界面_Java计算器源代码 awt+swing图形界面实现

这段代码展示了如何使用Java创建一个简单的计算器应用。它包含了数字和运算符按钮,支持基本的数学运算,如加、减、乘、除,以及平方根、倒数等功能。用户界面通过GridLayout布局管理器组织,并监听按钮事件来处理计算逻辑。
摘要由CSDN通过智能技术生成

/***************************Java计算器数字键盘区定义**************************/

JPanel pDown = new JPanel();

pDown.setLayout(newGridLayout(4,5,3,2));

bNumber = newJButton("7");

bNumber.setForeground(Color.blue);

bNumber.addActionListener(this);

bNumber.setMargin(newInsets(3,3,3,3));

pDown.add(bNumber);

bNumber = newJButton("8");

bNumber.setForeground(Color.blue);

bNumber.addActionListener(this);

bNumber.setMargin(newInsets(3,3,3,3));

pDown.add(bNumber);

bNumber = newJButton("9");

bNumber.setForeground(Color.blue);

bNumber.addActionListener(this);

bNumber.setMargin(newInsets(3,3,3,3));

pDown.add(bNumber);

bOperator = newJButton("/");

bOperator.setForeground(Color.red);

bOperator.addActionListener(this);

bOperator.setMargin(newInsets(3,0,3,0));

pDown.add(bOperator);

bOperator = newJButton("sqrt");

bOperator.addActionListener(this);

bOperator.setForeground(Color.red);

bOperator.setMargin(newInsets(3,0,3,0));

pDown.add(bOperator);

bNumber = newJButton("4");

bNumber.setForeground(Color.blue);

bNumber.addActionListener(this);

bNumber.setMargin(newInsets(3,3,3,3));

bNumber.setHorizontalTextPosition(JButton.LEFT);

pDown.add(bNumber);

bNumber = newJButton("5");

bNumber.setForeground(Color.blue);

bNumber.addActionListener(this);

bNumber.setMargin(newInsets(3,3,3,3));

pDown.add(bNumber);

bNumber = new JButton("6");

bNumber.setForeground(Color.blue);

bNumber.addActionListener(this);

bNumber.setMargin(newInsets(3,3,3,3));

pDown.add(bNumber);

bOperator = newJButton("*");

bOperator.setForeground(Color.red);

bOperator.addActionListener(this);

bOperator.setMargin(newInsets(3,3,3,3));

pDown.add(bOperator);

bOperator = newJButton("%");

bOperator.setForeground(Color.blue);

bOperator.addActionListener(this);

bOperator.setMargin(newInsets(3,3,3,3));

pDown.add(bOperator);

bNumber = newJButton("1");

bNumber.setForeground(Color.blue);

bNumber.addActionListener(this);

bNumber.setMargin(newInsets(3,3,3,3));

pDown.add(bNumber);

bNumber = newJButton("2");

bNumber.setForeground(Color.blue);

bNumber.addActionListener(this);

bNumber.setMargin(newInsets(3,3,3,3));

pDown.add(bNumber);

bNumber = newJButton("3");

bNumber.setForeground(Color.blue);

bNumber.addActionListener(this);

bNumber.setMargin(newInsets(3,3,3,3));

pDown.add(bNumber);

bOperator = newJButton("-");

bOperator.setForeground(Color.red);

bOperator.addActionListener(this);

bOperator.setMargin(newInsets(3,3,3,3));

pDown.add(bOperator);

bOperator = newJButton("1/x");

bOperator.setForeground(Color.blue);

bOperator.addActionListener(this);

pDown.add(bOperator);

bNumber = newJButton("0");

bNumber.setForeground(Color.blue);

bNumber.addActionListener(this);

bNumber.setMargin(newInsets(3,3,3,3));

pDown.add(bNumber);

bOperator = newJButton("+/-");

bOperator.setForeground(Color.blue);

bOperator.addActionListener(this);

bOperator.setMargin(newInsets(3,3,3,3));

pDown.add(bOperator);

bOperator = newJButton(".");

bOperator.setForeground(Color.blue);

bOperator.addActionListener(this);

bOperator.setMargin(newInsets(3,3,3,3));

pDown.add(bOperator);

bOperator = newJButton("+");

bOperator.setForeground(Color.blue);

bOperator.addActionListener(this);

bOperator.setMargin(new Insets(3,3,3,3));

pDown.add(bOperator);

bOperator = newJButton("=");

bOperator.setForeground(Color.blue);

bOperator.addActionListener(this);

bOperator.setMargin(newInsets(3,3,3,3));

pDown.add(bOperator);

pRight.add(pUp,BorderLayout.NORTH);

pRight.add(pDown,BorderLayout.SOUTH);

pBottom.add(pRight,BorderLayout.EAST);

contentPane.add(pBottom,BorderLayout.SOUTH);

f.setSize(new Dimension(320,256));

f.setResizable(false);

f.setVisible(true);

f.addWindowListener(newWindowAdapter()

{

public voidwindowClosing(WindowEvent e)

{

System.exit(0);

}

}

);

}

/************************Java计算器计算方法区***************************/

public void actionPerformed(ActionEvent e)

{

String s = e.getActionCommand();

if(s.equals("复制(C)"))

{

String temp= tResult.getText().trim();

copyBoard.replace(0, copyBoard.length(), temp);

mPaste.setEnabled(true);

}

else if(s.equals("粘贴(p)"))

{

tResult.setText(copyBoard.toString());

}

else if(s.equals("CE"))

{

//如果是CE则清除文本框tResult.setText("0.");

}

elseif(s.equals("BackSpace"))

{

if(!tResult.getText().trim().equals("0."))

{

//如果文本框中有内容if(str.length()!=1 && str.length()!=0)

{

tResult.setText(str.delete(str.length()-1,str.length()).toString());

}

else

{

tResult.setText("0.");

str.setLength(0);

}

}

op2 =Double.parseDouble(tResult.getText().trim());

}

else if(s.equals("C"))

{

//如果是C删除当前计算tResult.setText("0.");

op1 = op2 =0;

str.replace(0, str.length(), " ");

preOp =currentOp = 0;

}

else if(s.equals("MC"))

{

//如果是MC则清除缓冲区String temp= "";

memory.replace(0, memory.length(), temp);

bM.setText(" ");

}

else if(s.equals("MR"))

{

//如果按键为MR则恢复缓冲区的数到文本框tResult.setText(memory.toString());

}

else if(s.equals("MS"))

{

//如果按键为MS则将文本框的数存入缓冲区String s1 =tResult.getText().trim();

memory.replace(0,memory.length(), s1);

bM.setText("M");

}

else if(s.equals("M+"))

{

//如果按键为MS则将文本框值与缓冲区的数相加但不显示结果String temp1= tResult.getText().trim();

double dtemp= Double.parseDouble(temp1);

String temp2= memory.toString();

dtemp +=Double.parseDouble(temp2);

temp1 =String.valueOf(dtemp);

memory.replace(0, memory.length(), temp1);

}

else if(s.equals("1/x"))

{

//如果按键为1/x则将文本框中的数据为它的倒数String temp= tResult.getText().trim();

double dtemp= Double.parseDouble(temp);

tResult.setText(""+1/dtemp);

}

else if(s.equals("sqrt"))

{

//如果按键为sqrt则将文本框中的内容求平方根String temp= tResult.getText().trim();

double dtemp= Double.parseDouble(temp);

tResult.setText(""+Math.sqrt(dtemp));

}

else if(s.equals("+"))

{

str.setLength(0);

if(currentOp==0)

{

preOp = currentOp = 1;

op2 = 0;

tResult.setText(""+op1);

}

else

{

currentOp = preOp;

preOp = 1;

switch(currentOp){

case 1:

op1 += op2;

tResult.setText(""+op1);

break;

case 2:

op1 -= op2;

tResult.setText(""+op1);

break;

case 3:

op1 *= op2;

tResult.setText(""+op1);

break;

case 4:

op1 /= op2;

tResult.setText(""+op1);

break;

}

}

}

else if(s.equals("-")){

str.setLength(0);

if(currentOp==0)

{

preOp=currentOp=2;//op1=op2;op2=0;

tResult.setText(""+op1);

}

else

{

currentOp =preOp;

preOp =2;

switch(currentOp){

case 1:op1=op1+op2;tResult.setText(""+op1);break;

case 2:op1=op1-op2;tResult.setText(""+op1);break;

case 3:op1=op1*op2;tResult.setText(""+op1);break;

case 4:op1=op1/op2;tResult.setText(""+op1);break;

}

}

}

else if(s.equals("*"))//*

{

str.setLength(0);

if(currentOp==0)

{

preOp=currentOp=3;//op1=op2;op2=1;

tResult.setText(""+op1);//op1=op2;

}

else

{

currentOp =preOp;

preOp =3;

switch(currentOp){

case 1:op1=op1+op2;tResult.setText(""+op1);break;

case 2:op1=op1-op2;tResult.setText(""+op1);break;

case 3:op1=op1*op2;tResult.setText(""+op1);break;

case 4:op1=op1/op2;tResult.setText(""+op1);break;

}

}

}

else if(s.equals("/"))// /

{

str.setLength(0);

if(currentOp==0)

{

preOp=currentOp=4;//op2=1;

tResult.setText(""+op1);//op1=op2;

}

else

{

currentOp =preOp;

preOp =4;

switch(currentOp){

case 1:op1=op1+op2;tResult.setText(""+op1);break;

case 2:op1=op1-op2;tResult.setText(""+op1);break;

case 3:op1=op1*op2;tResult.setText(""+op1);break;

case 4:op1=op1/op2;tResult.setText(""+op1);break;

}

}

}

else if(s.equals("="))// =

{

if(currentOp==0)

{

str.setLength(0);

tResult.setText(""+op2);

}

else

{

str.setLength(0);

currentOp =preOp;

switch(currentOp){

case 1:op1=op1+op2;tResult.setText(""+op1);break;

case 2:op1=op1-op2;tResult.setText(""+op1);break;

case 3:op1=op1*op2;tResult.setText(""+op1);break;

case 4:op1=op1/op2;tResult.setText(""+op1);break;

}

currentOp=0;

op2=0;

}

}

else if(s.equals("."))

{

isDouble=true;

if(tResult.getText().trim().indexOf('.')!=-1);

else {

if(tResult.getText().trim().equals("0")) {

str.setLength(0);

tResult.setText((str.append("0"+s)).toString());

}

//else if(tResult.getText().trim().equals("")){}//如果初时显示为空则不做任何操作else {

tResult.setText((str.append(s)).toString());

}

}

}

else if(s.equals("0"))//如果选择的是"0"这个数字键{

if(tResult.getText().trim().equals("0.")){}

else{

tResult.setText(str.append(s).toString());

op2=Double.parseDouble(tResult.getText().trim());

}

}

else{

tResult.setText(str.append(s).toString());

op2=Double.parseDouble(tResult.getText().trim());

if(currentOp==0)

op1=op2;

}

}//end actionPerformed

public static void main(String[] args) {

new SunnyCalculator();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值