使用Java编写一个简单计算器
使用Java编写一个简单计算器
程序编写思路:
在编写这个计算器小程序时,首先需要对窗体和窗体中的组件有一个合理的布局,使编写出来的窗体看着美观简洁又实用.其次就是要注意对运算符和数字键的处理,为这些数字键和运算符键添加动作监听,使其在点击时,能够在文本框中输入相应的值.然后通过对文本框添加监听,获取文本框中的值,再进行相应的运算,并将结果输出的结果显示文本框中.
此程序的难点在于对于动作监听的使用,以及对文本框中内容转化为相应的数字和字符进行相应的运算.
程序的输出显示样例:
程序源代码:
// package 计算器;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.StringTokenizer;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class jisuanqi extends JFrame{
JPanel panel;
JTextField text;
//"0--9"JButton
JButton jb0,jb1,jb2,jb3,jb4,jb5,jb6,jb7,jb8,jb9;
//"+,-,*,/,."JButton
JButton add,sub,mul,div,bot,equ;
public jisuanqi(){
this.setBounds(300,200,400,300);
this.setTitle("计算器");
this.setLayout(new BorderLayout());//设置计算机窗体布局方式
text =new JTextField(15);
//新建数字按钮
jb0 = new JButton("0");
jb1 = new JButton("1");
jb2 = new JButton("2");
jb3 = new JButton("3");
jb4 = new JButton("4");
jb5 = new JButton("5");
jb6 = new JButton("6");
jb7 = new JButton("7");
jb8 = new JButton("8");
jb9 = new JButton("9");
//新建符号按钮
add = new JButton("+");
sub = new JButton("-");
mul = new JButton("*");
div = new JButton("/");
equ = new JButton("=");
bot = new JButton("'");
//新建计算器数字及符号所在区域面板
panel= new JPanel();
panel.setLayout(new GridLayout(4,4));
//讲个按钮组建放入面板
//第一行
panel.add(jb7);
panel.add(jb8);
panel.add(jb9);
panel.add(div);
//第二行
panel.add(jb4);
panel.add(jb5);
panel.add(jb6);
panel.add(mul);
//第三行
panel.add(jb1);
panel.add(jb2);
panel.add(jb3);
panel.add(sub);
//第四行
panel.add(bot);
panel.add(jb0);
panel.add(equ);
panel.add(add);
this.add(text,BorderLayout.NORTH);
this.add(panel);
MyEvent();//事件处理
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置面板可关闭
}
public void MyEvent(){
//给各数字键添加点击事件
Text(jb0);
Text(jb1);
Text(jb2);
Text(jb3);
Text(jb4);
Text(jb5);
Text(jb6);
Text(jb7);
Text(jb8);
Text(jb9);
Text(add);
Text(sub);
Text(mul);
Text(div);
Text(bot);
Text(equ);
equ.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
text.setText(text.getText()+equ.getText());
if(text.getText().contains("+")){
StringTokenizer st1 = new StringTokenizer(text.getText(),"+");
double d1,d2=0;
d1 = Double.parseDouble(st1.nextToken());
while(st1.hasMoreTokens()){
StringTokenizer st2 = new StringTokenizer(st1.nextToken(),"=");
d2 = Double.parseDouble(st2.nextToken());
}
text.setText(text.getText()+""+(d1+d2));
}
}
});
}
//各按钮的时间处理方法
public void Text(JButton button){
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
String str=button.getText();
System.out.println(str);
text.setText(text.getText() + str);
}
});
}
public static void main(String[] args) {
new jisuanqi();
}
}