这是我自己写的,使用Java创建一个计算器,有不对的地方请指出,谢谢
package third;
import java.awt.Button;
import java.awt.Font;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.Panel;
import java.awt.TextField;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
//让类去继承 Frame窗体类
public class CalcFrame extends Frame implements ActionListener{
//声明一个成员变量,记录用户所按下的操作符
char calcChar ;
//加载窗体属性 方法
public void load(){
setBounds(100, 100, 300, 300); //设置窗体的所在位置,以及高度和宽度
setTitle("我的第一个Java计算器"); //设置标题
Image image = Toolkit.getDefaultToolkit().getImage("images/帅哥.jpg");
setIconImage(image); //加载窗体中的图标
setVisible(true); //是否要将窗体显示的方法
//向窗体添加一个关闭按钮功能
addWindowListener( new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
} );
loadButton(); //调用了加载按钮的方法
loadMenu(); //调用了加载菜单条的方法
}
//在窗体中加载菜单条
public void loadMenu(){
MenuBar mb = new MenuBar(); //菜单条对象
Menu menu1 = new Menu("查看"); //菜单对象
MenuItem mi1 = new MenuItem("清除"); //子菜单对象
menu1.add(mi1); //把子菜单对象添加到相应的菜单对象中
Menu menu2 = new Menu("编辑");
Menu menu3 = new Menu("帮助");
mb.add(menu1); //将菜单对象添加到菜单条对象中
mb.add(menu2);
mb.add(menu3);
setMenuBar(mb); //将菜单条对象添加到窗体对象中
}
TextField tf = new TextField(); //文本框
//在窗体中加载控件
public void loadButton(){
setLayout( new GridLayout(2,1) ); //设置窗体的布局方式,为两行一列
add(tf); //将文本框加入到窗体中
Panel panel = new Panel(); //创建一个容器
panel.setLayout( new GridLayout(4,4) ); //设置该窗器布局方式,为4行4列
Button btn1 = new Button("1"); //创建按钮
btn1.addActionListener(this); //让按钮与实现的方法产生关系
btn1.setActionCommand("1"); //让按钮在点击时产生一个命令
Button btn2 = new Button("2");
btn2.addActionListener(this);
btn2.setActionCommand("2");
Button btn3 = new Button("3");
btn3.addActionListener(this);
btn3.setActionCommand("3");
Button btn4 = new Button("4");
btn4.addActionListener(this);
btn4.setActionCommand("4");
Button btn5 = new Button("5");
btn5.addActionListener(this);
btn5.setActionCommand("5");
Button btn6 = new Button("6");
btn6.addActionListener(this);
btn6.setActionCommand("6");
Button btn7 = new Button("7");
btn7.addActionListener(this);
btn7.setActionCommand("7");
Button btn8 = new Button("8");
btn8.addActionListener(this);
btn8.setActionCommand("8");
Button btn9 = new Button("9");
btn9.addActionListener(this);
btn9.setActionCommand("9");
Button btnJia = new Button("+");
btnJia.addActionListener(this);
btnJia.setActionCommand("+");
Button btnJian = new Button("-");
btnJian.addActionListener(this);
btnJian.setActionCommand("-");
Button btnCheng = new Button("*");
btnCheng.addActionListener(this);
btnCheng.setActionCommand("×");
Button btnChu = new Button("/");
btnChu.addActionListener(this);
btnChu.setActionCommand("/");
Button btnMo = new Button("%");
btnMo.addActionListener(this);
btnMo.setActionCommand("%");
Button btnResult = new Button("=");
btnResult.addActionListener(this);
btnResult.setActionCommand("=");
Button btnCancel = new Button("C");
btnCancel.addActionListener(this);
btnCancel.setActionCommand("C");
panel.add(btn1); //将所有的按钮加到窗器中
panel.add(btn2);
panel.add(btn3);
panel.add(btnJia);
panel.add(btn4);
panel.add(btn5);
panel.add(btn6);
panel.add(btnJian);
panel.add(btn7);
panel.add(btn8);
panel.add(btn9);
panel.add(btnCheng);
panel.add(btnChu);
panel.add(btnMo);
panel.add(btnResult);
panel.add(btnCancel);
add(panel);//调用窗体对象的add方法,是将容器添加到窗体中
}
public static void main(String[] args) {
CalcFrame calc = new CalcFrame();
calc.load();
}
//如果要实现按钮的单击功能的话,就需要实现ActionListener类所提供的方法
@Override
public void actionPerformed(ActionEvent e) {
//提示:e.getActionCommand()方法是接收一个命令的值
Font f = new Font("宋体",Font.BOLD,30); //由于文本框中的文字太小,因此创建一个带格式的字体类
tf.setFont(f);//将字体设置到文本框中
char c = e.getActionCommand().charAt(0); //获取所按下的符号
if(c>='1'&&c<='9') { //如果该符号是在1~9之间,就正常显示在文本框中
tf.setText( tf.getText() + e.getActionCommand() ); //设置文本框中的字体
} else if (c=='='){ //如果按的是等号,就计算结果
tf.setText(calcNum());
} else if(c == 'C'){ //如果按的是清除符号,就一个一个清除
String txt = tf.getText();
if(txt.length()>0){
tf.setText(txt.substring(0,txt.length()-1));
}
}else { //否则就是其它符号,要记录在变量中,方便运算
calcChar=e.getActionCommand().charAt(0); //记录操作符
tf.setText( tf.getText() + e.getActionCommand() ); //设置文本框中的字体
}
}
//进行计算的方法
public String calcNum(){
String[] numArray=new String[0]; //声明一个数组
int result=0;
switch(calcChar){
case '+': //如果操作符是加号
System.out.println(tf.getText());
numArray = tf.getText().split("+"); //根据+进行分割,分成两个数,然后将这两个数用加号加起来
result = Integer.parseInt(numArray[0])+Integer.parseInt(numArray[1]);
break;
case '-':
numArray = tf.getText().split("-");//根据+进行分割,分成两个数,然后将这两个数用减号运行
result = Integer.parseInt(numArray[0])-Integer.parseInt(numArray[1]);
break;
case '×':
numArray = tf.getText().split("×");//根据+进行分割,分成两个数,然后将这两个数相乘
result = Integer.parseInt(numArray[0])*Integer.parseInt(numArray[1]);
break;
case '/':
numArray = tf.getText().split("/");//根据+进行分割,分成两个数,然后将这两个数用除号运算
result = Integer.parseInt(numArray[0])/Integer.parseInt(numArray[1]);
break;
case '%':
numArray = tf.getText().split("%");//根据+进行分割,分成两个数,然后将这两个数用%号运算
result = Integer.parseInt(numArray[0])%Integer.parseInt(numArray[1]);
break;
}
return result+"";
}
}