java 计算器swing_【Java】Swing实现一个简单的计算器

本文展示了一个使用Java Swing库创建的简单计算器实现。代码包括一个JFrame窗口,一个JTextField用于显示输入和输出,以及一系列JButton按钮,涵盖了基本的数学运算。计算器通过监听按钮点击事件来更新输入字段的内容,并在按下等号键时执行计算。
摘要由CSDN通过智能技术生成

import javax.swing.*;import java.awt.*;/*** 计算器

*@authorpaul

* 2019.11.25 21:43

**/

public classMyCalculator {private String str="";//输入输出框内容

private JTextField text_input;//输出框

private JPanel jp_bottomArea;//按钮区域

private String []addsButtonString={"1","2","3","+","4","5","6","-","7","8","9","*",".","0","求根","/","=","取反","AC"};publicMyCalculator(){//初始化窗体

JFrame frame=new JFrame("计算器");

Container c=frame.getContentPane();

c.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS));//设置排布方式为Y轴排列

frame.setLocation(200,300);//设置位置

frame.setVisible(true);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

text_input=new JTextField(30);

text_input.setHorizontalAlignment(JTextField.RIGHT);

JPanel jPanel=new JPanel(new GridLayout(1,1,10,10));

jPanel.add(text_input);

c.add(jPanel);

GridBagLayout gridBagLayout=newGridBagLayout();

GridBagConstraints cs=newGridBagConstraints();

jp_bottomArea=newJPanel();

jp_bottomArea.setLayout(gridBagLayout);for(int i=0;i

cs.gridwidth=GridBagConstraints.REMAINDER;

}else if(addsButtonString[i].equals("=")){

cs.gridwidth=2;

}else{

cs.fill=GridBagConstraints.BOTH;

cs.weightx=1.0;

cs.gridwidth=1;

}

JButton btn= newJButton(addsButtonString[i]);

gridBagLayout.setConstraints(btn,cs);

btn.addActionListener(e->{

String command=e.getActionCommand();

setShowTextFiledNew(command);

});

jp_bottomArea.add(btn);

}

c.add(jp_bottomArea);

frame.pack();

}/*** 设置显示内容窗格

*@paramcommand 按钮点击命令

* 如果按下等于,则执行计算

* 如果按下运算符,则格式为 空格+运算符+空格

* 如果按下时数字,则直接拼接

**/

public voidsetShowTextFiledNew(String command){if(command.equals("=")){

str=getResult(str);

}else if(command.equals("+")||command.equals("-")||command.equals("*")||command.equals("/")||command.equals("求根")||command.equals("取反")){

str=str+" "+command+" ";

}else if(command.equals("AC")){

str="";

}else{

str=str+command;

}

text_input.setText(str);

}/*** 计算

*@paramstr 需要计算的字符串

* 根据空格进行分割成字符串数组

* 然后判断是哪种类型的运算符并进行计算

* 通过一个result来存放最终结果

**/

publicString getResult(String str){

Double result=0.0;

String []need_to_do=str.split(" ");for(int i=0;i

result=result+(Double.parseDouble(need_to_do[i-1])+Double.parseDouble(need_to_do[i+1]));break;case "-":

result=result+(Double.parseDouble(need_to_do[i-1])-Double.parseDouble(need_to_do[i+1]));break;case "*":

result=result+(Double.parseDouble(need_to_do[i-1])*Double.parseDouble(need_to_do[i+1]));break;case "/":

result=result+(Double.parseDouble(need_to_do[i-1])/Double.parseDouble(need_to_do[i+1]));break;case "求根":

result=result+(Math.sqrt(Double.parseDouble(need_to_do[i-1])));break;case "取反":

result=result+(-Double.parseDouble(need_to_do[i-1]));break;

}

}return result+"";

}public static voidmain(String[] args) {newMyCalculator();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值