package calculator1;
/*根据所设计出来的界面,首先要设计其GUI界面,总体界面有一个文本框,24个按钮.总体界面用BorderLayout布局,文本框放置在最NORTH,然后0到9以及+,-,*,/,.,-,sqrt,sin,cos,in,CE,=等按钮放置到一个
面板Panel中,完成界面设计。*/
import java.awt.*;
import java.awt.event.*;
public class calcu {
public static void main(String[] args) {
CalFrame f = new CalFrame();
}
}
class CalFrame extends Frame {
double d1, d2;
int op = -1;
TextField tf;
CalPanelL p1;
CalPanelR p2;
// Constructor
CalFrame() {
super("Calculator");
setLayout(new FlowLayout(FlowLayout.CENTER,8,10));
setBackground(new Color(100,150,150));
setForeground(Color.white);
setResizable(false);
setSize(300,200);
tf = new TextField(22);
tf.setEditable(false);
tf.setBackground(new Color(108,118,103));
tf.setForeground(Color.white);
tf.setFont(new Font("Arial",Font.BOLD,16));
add(tf);
p1 = new CalPanelL();
p2 = new CalPanelR();
add(p1);
add(p2);
setVisible(true);
addWindowListener(new Wclose());
}
// inner class:CalButton
class CalButton extends Button {
CalButton(String s){
super(s);
setBackground(Color.gray);
}
}
// inner class: CalPanelL
class CalPanelL extends Panel {
CalButton b0, b1, b2, b3,
b4, b5, b6, b7,
b8, b9, bPN, bPoint;
CalPanelL() {
setLayout(new GridLayout(4,3));
setFont(new Font("TimesRoman",Font.BOLD,16));
b0 = new CalButton("0");
b1 = new CalButton("1");
b2 = new CalButton("2");
b3 = new CalButton("3");
b4 = new CalButton("4");
b5 = new CalButton("5");
b6 = new CalButton("6");
b7 = new CalButton("7");
b8 = new CalButton("8");
b9 = new CalButton("9");
bPN = new CalButton("+/-");
bPoint = new CalButton(".");
// 加入按钮
add(b7); b7.addActionListener(new PressB7());
add(b8); b8.addActionListener(new PressB8());
add(b9); b9.addActionListener(new PressB9());
add(b4); b4.addActionListener(new PressB4());
add(b5); b5.addActionListener(new PressB5());
add(b6); b6.addActionListener(new PressB6());
add(b1); b1.addActionListener(new PressB1());
add(b2); b2.addActionListener(new PressB2());
add(b3); b3.addActionListener(new PressB3());
add(b0); b0.addActionListener(new PressB0());
add(bPN); bPN.addActionListener(new PressBPN()); ;
add(bPoint); bPoint.addActionListener(new PressBPoint());
}
}
class CalPanelR extends Panel {
CalButton bAdd, bSub, bMul, bDiv,
bSqrt, bSin, bCos, bYx,
bLn, bEqual, bCE, bBack;
CalPanelR() {
setLayout(new GridLayout(4,3));
setFont(new Font("TimesRoman",Font.BOLD,16));
bAdd = new CalButton("+");
bSub = new CalButton("-");
bMul = new CalButton("*");
bDiv = new CalButton("/");
bSqrt = new CalButton("sqrt");
bSin = new CalButton("sin");
bCos = new CalButton("cos");
bYx = new CalButton("y^x");
bLn = new CalButton("ln");
bEqual = new CalButton("=");
bCE = new CalButton("CE");
bBack = new CalButton("<-");
add(bDiv); bDiv.addActionListener(new PressBDiv());
add(bSqrt); bSqrt.addActionListener(new PressBSqrt());
add(bLn); bLn.addActionListener(new PressBLn());
add(bMul); bMul.addActionListener(new PressBMul());
add(bSin); bSin.addActionListener(new PressBSin());
add(bBack); bBack.addActionListener(new PressBBack());
add(bSub); bSub.addActionListener(new PressBSub());
add(bCos); bCos.addActionListener(new PressBCos());
add(bCE); bCE.addActionListener(new PressBCE());
add(bAdd); bAdd.addActionListener(new PressBAdd());
add(bYx); bYx.addActionListener(new PressBYx());
add(bEqual); bEqual.addActionListener(new PressBEqual());
}
}
class PressBAdd implements ActionListener {
public void actionPerformed(ActionEvent e) {
try {
d1 = Double.parseDouble(tf.getText());
op = 0;
tf.setText("");
} catch(Exception ee) {}
}
}
class PressBSub implements ActionListener {
public void actionPerformed(ActionEvent e) {
try {
d1 = Double.parseDouble(tf.getText());
op = 1;
tf.setText("");
} catch(Exception ee) {}
}
}
class PressBMul implements ActionListener {
public void actionPerformed(ActionEvent e) {
try {
d1 = Double.parseDouble(tf.getText());
op = 2;
tf.setText("");
} catch(Exception ee) {}
}
}
class PressBDiv implements ActionListener {
public void actionPerformed(ActionEvent e) {
try {
d1 = Double.parseDouble(tf.getText());
op = 3;
tf.setText("");
} catch(Exception ee) {}
}
}
class PressBYx implements ActionListener {
public void actionPerformed(ActionEvent e) {
try {
d1 = Double.parseDouble(tf.getText());
op = 4;
tf.setText("");
} catch(Exception ee) {}
}
}
class PressBEqual implements ActionListener {
public void actionPerformed(ActionEvent e) {
try {
double result = 0;
d2 = Double.parseDouble(tf.getText());
switch(op) {
case 0:
result = d1 + d2;
break;
case 1:
result = d1 - d2;
break;
case 2:
result = d1 * d2;
break;
case 3:
result = d1 / d2;
break;
case 4:
result = Math.pow(d1,d2);
break;
default:
}
tf.setText(String.valueOf(result));
} catch(Exception ee) {}
}
}
class PressBSqrt implements ActionListener {
public void actionPerformed(ActionEvent e) {
try {
double x = Double.parseDouble(tf.getText());
double y;
y = Math.sqrt(x);
tf.setText(y+"");
} catch(Exception ee) {}
}
}
class PressBLn implements ActionListener {
public void actionPerformed(ActionEvent e) {
try {
double x = Double.parseDouble(tf.getText());
double y;
y = Math.log(x);
tf.setText(y+"");
} catch(Exception ee) {}
}
}
class PressBSin implements ActionListener {
public void actionPerformed(ActionEvent e) {
try {
double x = Double.parseDouble(tf.getText());
double y;
y = Math.sin(x);
tf.setText(y+"");
} catch(Exception ee) {}
}
}
class PressBCos implements ActionListener {
public void actionPerformed(ActionEvent e) {
try {
double x = Double.parseDouble(tf.getText());
double y;
y = Math.cos(x);
tf.setText(y+"");
} catch(Exception ee) {}
}
}
class PressBBack implements ActionListener {
public void actionPerformed(ActionEvent e) {
try {
String text = tf.getText();
text = text.substring(0,text.length()-1);
tf.setText(text);
} catch(Exception ee) {}
}
}
class PressBCE implements ActionListener {
public void actionPerformed(ActionEvent e) {
tf.setText("");
}
}
class PressBPN implements ActionListener {
public void actionPerformed(ActionEvent e) {
try {
String text = tf.getText();
if (text != "") {
if(text.charAt(0) == '-')
tf.setText(text.substring(1));
else if(text.charAt(0) >= '0' && text.charAt(0) <= '9')
tf.setText("-"+text.substring(0));
else if(text.charAt(0) == '.')
tf.setText("-0"+text.substring(0));
}
} catch(Exception ee) { }
}
}
class PressBPoint implements ActionListener {
public void actionPerformed(ActionEvent e) {
String text = tf.getText();
if(text.lastIndexOf(".") == -1)
tf.setText(text+".");
}
}
class PressB0 implements ActionListener {
public void actionPerformed(ActionEvent e) {
String text = tf.getText();
tf.setText(text+"0");
}
}
class PressB1 implements ActionListener {
public void actionPerformed(ActionEvent e) {
String text = tf.getText();
tf.setText(text+"1");
}
}
class PressB2 implements ActionListener {
public void actionPerformed(ActionEvent e) {
String text = tf.getText();
tf.setText(text+"2");
}
}
class PressB3 implements ActionListener {
public void actionPerformed(ActionEvent e) {
String text = tf.getText();
tf.setText(text+"3");
}
}
class PressB4 implements ActionListener {
public void actionPerformed(ActionEvent e) {
String text = tf.getText();
tf.setText(text+"4");
}
}
class PressB5 implements ActionListener {
public void actionPerformed(ActionEvent e) {
String text = tf.getText();
tf.setText(text+"5");
}
}
class PressB6 implements ActionListener {
public void actionPerformed(ActionEvent e) {
String text = tf.getText();
tf.setText(text+"6");
}
}
class PressB7 implements ActionListener {
public void actionPerformed(ActionEvent e) {
String text = tf.getText();
tf.setText(text+"7");
}
}
class PressB8 implements ActionListener {
public void actionPerformed(ActionEvent e) {
String text = tf.getText();
tf.setText(text+"8");
}
}
class PressB9 implements ActionListener {
public void actionPerformed(ActionEvent e) {
String text = tf.getText();
tf.setText(text+"9");
}
}
class Wclose extends WindowAdapter {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
}
简单计算器
最新推荐文章于 2021-11-08 08:57:34 发布