import java.awt.BorderLayout; import java.awt.Button; import java.awt.Color; import java.awt.Frame; import java.awt.GridLayout; import java.awt.Panel; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;
public class Calculator { Frame f = new Frame(“计算器”); Panel p1 = new Panel(); Panel p2 = new Panel(); TextField tf = new TextField(30); Button b0 = new Button(“1”); Button b1 = new Button(“2”); Button b2 = new Button(“3”); Button b3 = new Button(“/”); Button b4 = new Button(“4”); Button b5 = new Button(“5”); Button b6 = new Button(“6”); Button b7 = new Button(“*”); Button b8 = new Button(“7”); Button b9 = new Button(“8”); Button b10 = new Button(“9”); Button b11= new Button(“-”); Button b12 = new Button(“0”);
// 增加多彩颜色
Color c1=new Color(255,255,0);
Color c2=new Color(255,192,203);
Color c3=new Color(128,128,128);
Color c4=new Color(135,206,250);
// 将按钮的颜色设置为多彩
public void setButtonColor(Button btn) {
if (btn == null) return;
String label=btn.getLabel().toLowerCase();
if (label.contains("+")) {
btn.setBackground(c1);
} else if (label.contains("-")) {
btn.setBackground(c2);
} else if (label.contains("*")) {
btn.setBackground(c3);
} else if (label.contains("/")) {
btn.setBackground(c4);
} else {
btn.setBackground(Color.WHITE);
}
}
Button b13 = new Button(“c”); Button b14= new Button(“+”); Button b15= new Button(“=”); Button b16= new Button(“sin”); Button b17= new Button(“cos”); Button b18= new Button(“tan”); Button b19= new Button(“log”);
A aa = new A();
class A implements ActionListener{ @Override public void actionPerformed(ActionEvent e) {
String s = e.getActionCommand(); if(s.equals(“c”)) {//清零 tf.setText(“”); }else if(s.equals(“=”)) { try { String str = tf.getText().trim(); double result = 0.0; if(str.contains(“+”)) { String num1 = str.substring(0,str.indexOf(“+”)).trim(); String num2 = str.substring(str.indexOf(“+”)+1).trim(); result = Double.parseDouble(num1)+Double.parseDouble(num2); }else if(str.contains(“-”)) { String num1 = str.substring(0,str.indexOf(“-”)).trim(); String num2 = str.substring(str.indexOf(“-”)+1).trim(); result = Double.parseDouble(num1)-Double.parseDouble(num2); }else if(str.contains(””)) { String num1 = str.substring(0,str.indexOf(””)).trim(); String num2 = str.substring(str.indexOf(“*”)+1).trim(); result = Double.parseDouble(num1)*Double.parseDouble(num2); }else if(str.contains(“/”)) { String num1 = str.substring(0,str.indexOf(“/”)).trim(); String num2 = str.substring(str.indexOf(“/”)+1).trim(); if(num2.equals(“0”)) { tf.setText(“分母不能为0”); return; } result = Double.parseDouble(num1)/Double.parseDouble(num2); } tf.setText(String.valueOf(result)); }catch(Exception exception) { tf.setText(“输入有误”); } }else if(s.equals(“sin”)) { try { String str = tf.getText().trim(); double num = Double.parseDouble(str); double result = Math.sin(num * Math.PI / 180);
setButtonColor(b16); // 设置按钮颜色
tf.setText(String.valueOf(result));
} catch (Exception exception) {
tf.setText("输入有误");
}
} else if (s.equals("cos")) {
try {
String str = tf.getText().trim();
double num = Double.parseDouble(str);
double result = Math.cos(num * Math.PI / 180);
setButtonColor(b17); // 设置按钮颜色
tf.setText(String.valueOf(result));
} catch (Exception exception) {
tf.setText("输入有误");
}
} else if (s.equals("tan")) {
try {
String str = tf.getText().trim();
double num = Double.parseDouble(str);
double result = Math.tan(num * Math.PI / 180);
setButtonColor(b18); // 设置按钮颜色
tf.setText(String.valueOf(result));
} catch (Exception exception) {
tf.setText("输入有误");
}
} else if (s.equals("log")) {
try {
String str = tf.getText().trim();
double num = Double.parseDouble(str);
double result = Math.log(num);
setButtonColor(b19); // 设置按钮颜色
tf.setText(String.valueOf(result));
} catch (Exception exception) {
tf.setText("输入有误");
}
} else if (Character.isDigit(s.charAt(0))) { // 限制只能输入数字
tf.setText(tf.getText() + s); }
}
}
void init() { p1.add(tf); p2.setLayout(new GridLayout(5,4,5,5)); p2.add(b1); p2.add(b2); p2.add(b3); p2.add(b0); p2.add(b4); p2.add(b5); p2.add(b6); p2.add(b7); p2.add(b8); p2.add(b9); p2.add(b10);
p2.add(b11);
b11.setBackground(Color.WHITE); // 设置减号的背景为白色
p2.add(b12);
p2.add(b13);
b13.setBackground(Color.WHITE); // 设置清零按钮的背景为白色
b14.setBackground(c1); // 设置加号的颜色
b15.setBackground(c4); // 设置等于号的颜色
p2.add(b14);
for (int i = 16; i <= 19; i++) {
Button btn = (Button)p2.getComponent(i - 1); // 获取 sin、cos、tan、log 按钮
setButtonColor(btn); // 设置按钮颜色
}
p2.add(b15);
p2.add(b16);
p2.add(b17);
p2.add(b18);
p2.add(b19);
b0.addActionListener(aa); b1.addActionListener(aa); b2.addActionListener(aa); b3.addActionListener(aa); b4.addActionListener(aa); b5.addActionListener(aa); b6.addActionListener(aa); b7.addActionListener(aa); b8.addActionListener(aa); b9.addActionListener(aa); b10.addActionListener(aa);
// 添加按钮监听器
for(int i=11;i<=19;i++) { Button btn=(Button)p2.getComponent(i-1); // 获取第i个按钮 btn.setBackground(Color.WHITE); // 设置按钮背景为白色 btn.setForeground(Color.BLACK); // 设置文字颜色为黑色 btn.setFont(btn.getFont().deriveFont(18f)); // 设置文字大小为18号字体 btn.addActionListener(new ActionListener() { // 为按钮添加监听器 public void actionPerformed(ActionEvent e) { String str=tf.getText()+btn.getLabel(); // 将输入框中的内容与当前按钮的标签相加,得到新的字符串 tf.setText(str); // 将新的字符串设置到输入框中去
setButtonColor(btn); // 设置按钮颜色
}
});
}
f.add(p1,BorderLayout.NORTH);
f.add(p2,BorderLayout.CENTER);
f.setSize(300,250);
f.setVisible(true); }
public static void main(String[] args) {
new Calculator().init(); } }