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 JavaxCalculator extends JApplet implements ActionListener
{
public String[] KEYS ={"7","8","9","/","sqrt","4","5","6","*","%","1","2","3","-","1/x","0","+/-",".","+","="};
public String[] COMMAND ={ "Backspace", "CE", "C" };
public JButton keys[] = new JButton[KEYS.length];
public JButton commands[] = new JButton[COMMAND.length];
public JTextField display = new JTextField("0");
public void setup()
{
display.setHorizontalAlignment(JTextField.RIGHT);
JPanel calckeys = new JPanel();
JPanel command = new JPanel();
JPanel calms = new JPanel();
calckeys.setLayout(new GridLayout(4, 5, 2, 2));
command.setLayout(new GridLayout(1, 3, 2, 2));
calms.setLayout(new GridLayout(5, 1, 2, 2));
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);
}
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();
display.addKeyListener(new keylis()); for (int i = 0; i < KEYS.length; i++)
{ keys[i].addActionListener(this);
keys[i].addKeyListener(new keylis()); }
for (int i = 0; i < COMMAND.length; i++)
{ commands[i].addActionListener(this); keys[i].addKeyListener(new keylis()); }
display.setEditable(false);
}
class keylis implements KeyListener{
public void keyPressed(KeyEvent e){
char ck=e.getKeyChar();
String k=String.valueOf(ck);
System.out.println(k);
if (k == "C") handleC();
else if (k == "Backspace") handleBackspace();
else if (k == "CE") display.setText("0");
else if ("0123456789.".indexOf(k) >= 0) handleNumber(k);
else handleOperator(k);
}
public void keyTyped(KeyEvent e){}
public void keyReleased(KeyEvent event){}
}
public void actionPerformed(ActionEvent e)
{
String label = 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);
else handleOperator(label);
}
public boolean firstDigit = true;
public 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;
} public double number = 0.0;
public String operator = "="; public void handleOperator(String key)
{
if (operator.equals("/"))
{
if (getNumberFromDisplay() == 0)
display.setText("除数不能为零");
else
{
number /= getNumberFromDisplay();
long t1 = (long) number;
double 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 = (long) number;
double t2 = number - t1;
if (t2 == 0)
display.setText(String.valueOf(t1));
else
display.setText(String.valueOf(number));
operator = key;
firstDigit = true;
}
public double getNumberFromDisplay(){
return Double.parseDouble(display.getText());
} private void handleC()
{
display.setText("0");
firstDigit = true;
operator = "=";
} public 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();
JavaxCalculator Cal= new JavaxCalculator();
Cal.init();
f.getContentPane().add("Center", Cal);
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 JavaxCalculator extends JApplet implements ActionListener
{
public String[] KEYS ={"7","8","9","/","sqrt","4","5","6","*","%","1","2","3","-","1/x","0","+/-",".","+","="};
public String[] COMMAND ={ "Backspace", "CE", "C" };
public JButton keys[] = new JButton[KEYS.length];
public JButton commands[] = new JButton[COMMAND.length];
public JTextField display = new JTextField("0");
public void setup()
{
display.setHorizontalAlignment(JTextField.RIGHT);
JPanel calckeys = new JPanel();
JPanel command = new JPanel();
JPanel calms = new JPanel();
calckeys.setLayout(new GridLayout(4, 5, 2, 2));
command.setLayout(new GridLayout(1, 3, 2, 2));
calms.setLayout(new GridLayout(5, 1, 2, 2));
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);
}
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();
display.addKeyListener(new keylis()); for (int i = 0; i < KEYS.length; i++)
{ keys[i].addActionListener(this);
keys[i].addKeyListener(new keylis()); }
for (int i = 0; i < COMMAND.length; i++)
{ commands[i].addActionListener(this); keys[i].addKeyListener(new keylis()); }
display.setEditable(false);
}
class keylis implements KeyListener{
public void keyPressed(KeyEvent e){
char ck=e.getKeyChar();
String k=String.valueOf(ck);
System.out.println(k);
if (k == "C") handleC();
else if (k == "Backspace") handleBackspace();
else if (k == "CE") display.setText("0");
else if ("0123456789.".indexOf(k) >= 0) handleNumber(k);
else handleOperator(k);
}
public void keyTyped(KeyEvent e){}
public void keyReleased(KeyEvent event){}
}
public void actionPerformed(ActionEvent e)
{
String label = 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);
else handleOperator(label);
}
public boolean firstDigit = true;
public 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;
} public double number = 0.0;
public String operator = "="; public void handleOperator(String key)
{
if (operator.equals("/"))
{
if (getNumberFromDisplay() == 0)
display.setText("除数不能为零");
else
{
number /= getNumberFromDisplay();
long t1 = (long) number;
double 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 = (long) number;
double t2 = number - t1;
if (t2 == 0)
display.setText(String.valueOf(t1));
else
display.setText(String.valueOf(number));
operator = key;
firstDigit = true;
}
public double getNumberFromDisplay(){
return Double.parseDouble(display.getText());
} private void handleC()
{
display.setText("0");
firstDigit = true;
operator = "=";
} public 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();
JavaxCalculator Cal= new JavaxCalculator();
Cal.init();
f.getContentPane().add("Center", Cal);
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.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;public class JavaxCalculator extends JFrame implements ActionListener {
public String[] KEYS = { "7", "8", "9", "/", "sqrt", "4", "5", "6", "*",
"%", "1", "2", "3", "-", "1/x", "0", "+/-", ".", "+", "=" };
public String[] COMMAND = { "Backspace", "CE", "C" };
public JButton keys[] = new JButton[KEYS.length];
public JButton commands[] = new JButton[COMMAND.length];
public JTextField display = new JTextField("0"); public boolean firstDigit = true; public JavaxCalculator() {
setup();
display.addKeyListener(new keylis()); for (int i = 0; i < KEYS.length; i++) {
keys[i].addActionListener(this);
keys[i].addKeyListener(new keylis()); }
for (int i = 0; i < COMMAND.length; i++) {
commands[i].addActionListener(this);
keys[i].addKeyListener(new keylis());
}
display.setEditable(false);
} public void setup() {
display.setHorizontalAlignment(JTextField.RIGHT);
JPanel calckeys = new JPanel();
JPanel command = new JPanel();
JPanel calms = new JPanel();
calckeys.setLayout(new GridLayout(4, 5, 2, 2));
command.setLayout(new GridLayout(1, 3, 2, 2));
calms.setLayout(new GridLayout(5, 1, 2, 2));
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);
}
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);
} class keylis extends KeyAdapter {
public void keyPressed(KeyEvent e) {
char ck = e.getKeyChar();
String k = String.valueOf(ck);
System.out.println(k);
if (k == "C") {
handleC();
} else if (k == "Backspace") {
handleBackspace();
} else if (k == "CE") {
display.setText("0");
} else if ("0123456789.".indexOf(k) >= 0) {
handleNumber(k);
} else {
handleOperator(k);
}
}
} public void actionPerformed(ActionEvent e) {
String label = 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);
} else {
handleOperator(label);
}
} public 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;
} public double number = 0.0;
public String operator = "="; public void handleOperator(String key) {
if (operator.equals("/")) {
if (getNumberFromDisplay() == 0) {
display.setText("除数不能为零");
} else {
number /= getNumberFromDisplay();
long t1 = (long) number;
double 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 = (long) number;
double t2 = number - t1;
if (t2 == 0) {
display.setText(String.valueOf(t1));
} else {
display.setText(String.valueOf(number));
}
operator = key;
firstDigit = true;
} public double getNumberFromDisplay() {
return Double.parseDouble(display.getText()); } private void handleC() {
display.setText("0");
firstDigit = true;
operator = "=";
} public 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[]) {
JavaxCalculator Cal = new JavaxCalculator();
Cal.setBounds(300, 200, 380, 245);
Cal.setBackground(Color.LIGHT_GRAY);
Cal.validate();
Cal.setResizable(false);
Cal.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}); Cal.setTitle("计算器");
Cal.setVisible(true);
}
}
<APPLET CODE="JavaxCalculator.class" width=150 height=200>
</APPLET>
就可以了。