因为是新手(很纯的那种),所以有点凌乱,代码很渣很冗余(后面会精简),命名规则请无视。当然这个计算器还只是能跑起来的程度,估计会有莫名其妙的错误,比如我的指数运算的指数只支持整数等。毕竟是第一次自己独立写一个小东西,还是很开心的。
1.主要部分(布局以及点击事件ActionEvent监听)
package 计算器;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class JiSuanQi {
//三个基础布局组件
Frame f = new Frame("计算器");
TextField t = new TextField("0",40);
Panel p = new Panel(new GridLayout(5,4,10,10));//panel是网格布局
//加载业务逻辑
YeWuLuoJi ywlj = new YeWuLuoJi();
//button String
String strNum = "0123456789";
String strToken = "+-*/";
String strEqual = "=";
String strPoint = ".";
String strClear = "c";
String[] buttonStr = {"c","+/-","x^2","x^y","1","2","3","+","4","5","6","-","7","8","9","*","0",".","=","/"};
//监听事件
ActionListener al = null;
//创建并添加Button,并加入监听事件
public void init() {
for(String i : buttonStr) {
Button b = new Button(i);
b.addActionListener(getAL());
p.add(b);
}
f.addWindowListener(new windowL());
f.add(t,BorderLayout.NORTH);
f.add(p); //默认是BorderLayout.CENTER布局
f.pack();//自适应合适大小
f.setVisible(true);//f设置为可见
}
//获取监听事件,注意匿名内部类不要使用局部变量,因为一个在内存堆中,一个在栈中,生命周期不同
public ActionListener getAL() {
if(al==null) {
al = new ActionListener() {
public void actionPerformed(ActionEvent e) {
String buttonStr1 = e.getActionCommand(); //返回与事件向关联的组件的名称
String textStr = t.getText();
result = ywlj.yewuMethod(buttonStr1,textStr);//运行业务逻辑
t.setText(textStr);
}
};//这只是一条语句,分号结尾
}
return al;
}
//窗口关闭事件
class windowL extends WindowAdapter{