import
java.applet.
*
;
import java.awt. * ;
import java.awt.event. * ;
import java.lang. * ;
import java.applet.Applet;
import javax.swing. * ;
import javax.swing.border. * ;
public class Calculator extends JApplet implements ActionListener ... {
private final String[] KEYS = ...{ "7", "8", "9", "/", "sqrt", "4", "5", "6",
"*", "%", "1", "2", "3", "-", "1/x", "0", "+/-", ".", "+", "=" };
private final String[] COMMAND = ...{ "Backspace", "CE", "C" };
private final String[] M = ...{ " ", "MC", "MR", "MS", "M+" };
private JButton keys[] = new JButton[KEYS.length];
private JButton commands[] = new JButton[COMMAND.length];
private JButton m[] = new JButton[M.length];
private JTextField display = new JTextField("0");
// public JTextField setHorizontalAlignment(int alignment);
// private JTextField display.setHorizontalAlignment(JTextField.RIGHT)=new
// JTextField("0");
private void setup() ...{
display.setHorizontalAlignment(JTextField.RIGHT);
JPanel calckeys = new JPanel();
JPanel command = new JPanel();
JPanel calms = new JPanel();
calckeys.setLayout(new GridLayout(4, 5, 3, 3));
command.setLayout(new GridLayout(1, 3, 3, 3));
calms.setLayout(new GridLayout(5, 1, 3, 3));
for (int i = 0; i < KEYS.length; i++) ...{
keys[i] = new JButton(KEYS[i]);
calckeys.add(keys[i]);
keys[i].setForeground(Color.blue);
}
keys[3].setForeground(Color.red);
keys[4].setForeground(Color.red);
keys[8].setForeground(Color.red);
keys[9].setForeground(Color.red);
keys[13].setForeground(Color.red);
keys[14].setForeground(Color.red);
keys[18].setForeground(Color.red);
keys[19].setForeground(Color.red);
for (int i = 0; i < COMMAND.length; i++) ...{
commands[i] = new JButton(COMMAND[i]);
command.add(commands[i]);
commands[i].setForeground(Color.red);
}
for (int i = 0; i < M.length; i++) ...{
m[i] = new JButton(M[i]);
calms.add(m[i]);
m[i].setForeground(Color.red);
}
JPanel panel1 = new JPanel();
panel1.setLayout(new BorderLayout(3, 3));
panel1.add("North", command);
panel1.add("Center", calckeys);
JPanel top = new JPanel();
top.setLayout(new BorderLayout());
display.setBackground(Color.WHITE);
top.add("Center", display);
getContentPane().setLayout(new BorderLayout(3, 5));
getContentPane().add("North", top);
getContentPane().add("Center", panel1);
getContentPane().add("West", calms);
}
public void init() ...{
setup();
for (int i = 0; i < KEYS.length; i++) ...{
keys[i].addActionListener(this);
}
for (int i = 0; i < COMMAND.length; i++) ...{
commands[i].addActionListener(this);
}
for (int i = 0; i < M.length; i++) ...{
m[i].addActionListener(this);
}
display.setEditable(false);
}
public void actionPerformed(ActionEvent e) ...{
String label = e.getActionCommand();
// double zero=e.getActionCommand();
if (label == "C")
handleC();
else if (label == "Backspace")
handleBackspace();
else if (label == "CE")
display.setText("0");
else if ("0123456789.".indexOf(label) >= 0) ...{
handleNumber(label);
// handlezero(zero);
} else
handleOperator(label);
}
private boolean firstDigit = true;
private void handleNumber(String key) ...{
if (firstDigit)
display.setText(key);
else if ((key.equals(".")) && (display.getText().indexOf(".") < 0))
display.setText(display.getText() + ".");
else if (!key.equals("."))
display.setText(display.getText() + key);
firstDigit = false;
}
// private void handlezero(String key)
// {
// if(!((double)display.setText(key))
// display.setText(0);
// }
private double number = 0.0;
private String operator = "=";
private void handleOperator(String key) ...{
if (operator.equals("/")) ...{
if (getNumberFromDisplay() == 0.0)
display.setText("除数不能为零");
else ...{
number /= getNumberFromDisplay();
long t1;
double t2;
t1 = (long) number;
t2 = number - t1;
if (t2 == 0)
display.setText(String.valueOf(t1));
else
display.setText(String.valueOf(number));
}
} else if (operator.equals("1/x")) ...{
if (number == 0.0)
display.setText("零没有倒数");
else ...{
number = 1 / number;
long t1;
double t2;
t1 = (long) number;
t2 = number - t1;
if (t2 == 0)
display.setText(String.valueOf(t1));
else
display.setText(String.valueOf(number));
}
} else if (operator.equals("+"))
number += getNumberFromDisplay();
else if (operator.equals("-"))
number -= getNumberFromDisplay();
else if (operator.equals("*"))
number *= getNumberFromDisplay();
else if (operator.equals("sqrt")) ...{
number = Math.sqrt(number);
} else if (operator.equals("%"))
number = number / 100;
else if (operator.equals("+/-"))
number = number * (-1);
else if (operator.equals("="))
number = getNumberFromDisplay();
long t1;
double t2;
t1 = (long) number;
t2 = number - t1;
if (t2 == 0)
display.setText(String.valueOf(t1));
else
display.setText(String.valueOf(number));
operator = key;
firstDigit = true;
}
private double getNumberFromDisplay() ...{
return Double.valueOf(display.getText()).doubleValue();
}
private void handleC() ...{
display.setText("0");
firstDigit = true;
operator = "=";
}
private void handleBackspace() ...{
String text = display.getText();
int i = text.length();
if (i > 0) ...{
text = text.substring(0, i - 1);
if (text.length() == 0) ...{
display.setText("0");
firstDigit = true;
operator = "=";
} else
display.setText(text);
}
}
public static void main(String args[]) ...{
JFrame f = new JFrame();
Calculator Calculator1 = new Calculator();
Calculator1.init();
f.getContentPane().add("Center", Calculator1);
f.setVisible(true);
f.setBounds(300, 200, 380, 245);
f.setBackground(Color.LIGHT_GRAY);
f.validate();
f.setResizable(false);
f.addWindowListener(new WindowAdapter() ...{
public void windowClosing(WindowEvent e) ...{
System.exit(0);
}
});
f.setTitle("计算器");
}
}
import java.awt. * ;
import java.awt.event. * ;
import java.lang. * ;
import java.applet.Applet;
import javax.swing. * ;
import javax.swing.border. * ;
public class Calculator extends JApplet implements ActionListener ... {
private final String[] KEYS = ...{ "7", "8", "9", "/", "sqrt", "4", "5", "6",
"*", "%", "1", "2", "3", "-", "1/x", "0", "+/-", ".", "+", "=" };
private final String[] COMMAND = ...{ "Backspace", "CE", "C" };
private final String[] M = ...{ " ", "MC", "MR", "MS", "M+" };
private JButton keys[] = new JButton[KEYS.length];
private JButton commands[] = new JButton[COMMAND.length];
private JButton m[] = new JButton[M.length];
private JTextField display = new JTextField("0");
// public JTextField setHorizontalAlignment(int alignment);
// private JTextField display.setHorizontalAlignment(JTextField.RIGHT)=new
// JTextField("0");
private void setup() ...{
display.setHorizontalAlignment(JTextField.RIGHT);
JPanel calckeys = new JPanel();
JPanel command = new JPanel();
JPanel calms = new JPanel();
calckeys.setLayout(new GridLayout(4, 5, 3, 3));
command.setLayout(new GridLayout(1, 3, 3, 3));
calms.setLayout(new GridLayout(5, 1, 3, 3));
for (int i = 0; i < KEYS.length; i++) ...{
keys[i] = new JButton(KEYS[i]);
calckeys.add(keys[i]);
keys[i].setForeground(Color.blue);
}
keys[3].setForeground(Color.red);
keys[4].setForeground(Color.red);
keys[8].setForeground(Color.red);
keys[9].setForeground(Color.red);
keys[13].setForeground(Color.red);
keys[14].setForeground(Color.red);
keys[18].setForeground(Color.red);
keys[19].setForeground(Color.red);
for (int i = 0; i < COMMAND.length; i++) ...{
commands[i] = new JButton(COMMAND[i]);
command.add(commands[i]);
commands[i].setForeground(Color.red);
}
for (int i = 0; i < M.length; i++) ...{
m[i] = new JButton(M[i]);
calms.add(m[i]);
m[i].setForeground(Color.red);
}
JPanel panel1 = new JPanel();
panel1.setLayout(new BorderLayout(3, 3));
panel1.add("North", command);
panel1.add("Center", calckeys);
JPanel top = new JPanel();
top.setLayout(new BorderLayout());
display.setBackground(Color.WHITE);
top.add("Center", display);
getContentPane().setLayout(new BorderLayout(3, 5));
getContentPane().add("North", top);
getContentPane().add("Center", panel1);
getContentPane().add("West", calms);
}
public void init() ...{
setup();
for (int i = 0; i < KEYS.length; i++) ...{
keys[i].addActionListener(this);
}
for (int i = 0; i < COMMAND.length; i++) ...{
commands[i].addActionListener(this);
}
for (int i = 0; i < M.length; i++) ...{
m[i].addActionListener(this);
}
display.setEditable(false);
}
public void actionPerformed(ActionEvent e) ...{
String label = e.getActionCommand();
// double zero=e.getActionCommand();
if (label == "C")
handleC();
else if (label == "Backspace")
handleBackspace();
else if (label == "CE")
display.setText("0");
else if ("0123456789.".indexOf(label) >= 0) ...{
handleNumber(label);
// handlezero(zero);
} else
handleOperator(label);
}
private boolean firstDigit = true;
private void handleNumber(String key) ...{
if (firstDigit)
display.setText(key);
else if ((key.equals(".")) && (display.getText().indexOf(".") < 0))
display.setText(display.getText() + ".");
else if (!key.equals("."))
display.setText(display.getText() + key);
firstDigit = false;
}
// private void handlezero(String key)
// {
// if(!((double)display.setText(key))
// display.setText(0);
// }
private double number = 0.0;
private String operator = "=";
private void handleOperator(String key) ...{
if (operator.equals("/")) ...{
if (getNumberFromDisplay() == 0.0)
display.setText("除数不能为零");
else ...{
number /= getNumberFromDisplay();
long t1;
double t2;
t1 = (long) number;
t2 = number - t1;
if (t2 == 0)
display.setText(String.valueOf(t1));
else
display.setText(String.valueOf(number));
}
} else if (operator.equals("1/x")) ...{
if (number == 0.0)
display.setText("零没有倒数");
else ...{
number = 1 / number;
long t1;
double t2;
t1 = (long) number;
t2 = number - t1;
if (t2 == 0)
display.setText(String.valueOf(t1));
else
display.setText(String.valueOf(number));
}
} else if (operator.equals("+"))
number += getNumberFromDisplay();
else if (operator.equals("-"))
number -= getNumberFromDisplay();
else if (operator.equals("*"))
number *= getNumberFromDisplay();
else if (operator.equals("sqrt")) ...{
number = Math.sqrt(number);
} else if (operator.equals("%"))
number = number / 100;
else if (operator.equals("+/-"))
number = number * (-1);
else if (operator.equals("="))
number = getNumberFromDisplay();
long t1;
double t2;
t1 = (long) number;
t2 = number - t1;
if (t2 == 0)
display.setText(String.valueOf(t1));
else
display.setText(String.valueOf(number));
operator = key;
firstDigit = true;
}
private double getNumberFromDisplay() ...{
return Double.valueOf(display.getText()).doubleValue();
}
private void handleC() ...{
display.setText("0");
firstDigit = true;
operator = "=";
}
private void handleBackspace() ...{
String text = display.getText();
int i = text.length();
if (i > 0) ...{
text = text.substring(0, i - 1);
if (text.length() == 0) ...{
display.setText("0");
firstDigit = true;
operator = "=";
} else
display.setText(text);
}
}
public static void main(String args[]) ...{
JFrame f = new JFrame();
Calculator Calculator1 = new Calculator();
Calculator1.init();
f.getContentPane().add("Center", Calculator1);
f.setVisible(true);
f.setBounds(300, 200, 380, 245);
f.setBackground(Color.LIGHT_GRAY);
f.validate();
f.setResizable(false);
f.addWindowListener(new WindowAdapter() ...{
public void windowClosing(WindowEvent e) ...{
System.exit(0);
}
});
f.setTitle("计算器");
}
}