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("计算器");
    }
}

解决方案 »

  1.   

    http://topic.csdn.net/u/20080709/12/c92cc549-3dc3-4a0b-b6e8-7c5fe7c4c9d5.html
    我的计算器
      

  2.   

    是要改成JFrame的吗?import java.awt.BorderLayout;
    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);
    }
    }
      

  3.   

    那个就是Applet的,可以直接嵌到网页上运行的!!!
      

  4.   

    改成web?,不用改,把刚才代码的文件放在和网页一个目录下,网页的内容是
    <APPLET CODE="JavaxCalculator.class" width=150 height=200> 
    </APPLET> 
    就可以了。
      

  5.   

    要改成小程序.这是应用程序.不要main
      

  6.   

    要main不是更好吗?小程序,应用程序都可以
      

  7.   

    ... 晕死,最好去好好学学Applet再结贴,真受不了