package Week8;
import java.awt.*;
import java.awt.event.*;
public class EasyCounter {
public static void main(String[] args) {
Frame f = new Frame("EasyCouter");
f.setBounds(1000, 200, 450, 100);
//选择布局方式
f.setLayout(new FlowLayout());
f.setResizable(false); // 设置为大小不可变的
//创建一个按钮,用于提示,其中op只能为(+-*/)
Button Tips = new Button("a op b = ");
//创建文本框
TextField tf1 = new TextField(10);//用于输入第一个数值
TextField op = new TextField(3);//用于输入操作符+-*/
TextField tf2 = new TextField(10);//用于输入第二个数值
//创建按钮
Button bu = new Button("=");//用以计算结果
//创建文本域
TextArea Pr = new TextArea(1,15);//显示结果
f.add(Tips);
f.add(tf1);f.add(op);f.add(tf2);f.add(bu);f.add(Pr);//添加按钮文本框文本域
f.addWindowListener(new WindowAdapter() {//侦听窗口关闭就结束程序
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
bu.addActionListener(new ActionListener() {//侦听=按钮,每次点击=按钮计算结果
@Override
public void actionPerformed(ActionEvent e) {
double a = Double.valueOf(tf1.getText().trim());//获得第一个文本框的数值
double b = Double.valueOf(tf2.getText().trim());//获得第二个文本框的数值
/*
* Double.valueOf(String s)
* 会将St转换并返回一个双精度的数值,如果St含有其他字符,将会异常
* 例如St="asofnw9o";代码会异常
* 例如St="1649.615";代码正确
*/
GetResult(a,op.getText().trim(),b);//计算结果
tf1.requestFocus();//光标移动到第一个文本框
}
private void GetResult(double a, String op, double b) {
switch(op) {
case "+": Pr.append(a+b+"\r\n");break;
case "-": Pr.append(a-b+"\r\n");break;
case "*": Pr.append(a*b+"\r\n");break;
case "/":
if(b!=0) Pr.append(a/b+"\r\n");
else Pr.append("除数为0结果错误\r\n");
break;
}
}
});
f.setVisible(true);//窗口可见
}
}
有注释不再过多赘述