以文本方式查看主题

-  课外天地 李树青  (http://www.njcie.com/bbs/index.asp)
--  Java程序语言课件  (http://www.njcie.com/bbs/list.asp?boardid=17)
----  作业之五:计算器  (http://www.njcie.com/bbs/dispbbs.asp?boardid=17&id=617)

--  作者:admin
--  发布时间:2008/12/6 16:58:23
--  作业之五:计算器

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Exec {
        public static void main(String args[]) {
                MyFrame m = new MyFrame();
                m.setVisible(true);
                m.pack();
        }
}

class MyFrame extends JFrame implements ActionListener {
        JTextField jtf = new JTextField();

        JPanel jp = new JPanel();

        JButton[] jb = new JButton[10];

        JButton jbEqual = new JButton("=");

        JButton jbAdd = new JButton("+");

        JButton jbMinus = new JButton("-");

        JButton jbMultiply = new JButton("*");

        JButton jbDivide = new JButton("/");

        int number1 = 0;

        int number2 = 0;

        char operation = \' \';

        public MyFrame() {
                super("计算器");
                setLayout(new BorderLayout());
                jtf.setHorizontalAlignment(JTextField.RIGHT);
                add(jtf, BorderLayout.NORTH);
                add(jp, BorderLayout.CENTER);
                jp.setLayout(new GridLayout(5, 3));
                for (int i = 0; i < jb.length; i++) {
                        jb[i] = new JButton(String.valueOf(i));
                        jb[i].addActionListener(this);
                        jp.add(jb[i]);
                }
                jp.add(jbAdd);
                jbAdd.addActionListener(this);
                jp.add(jbMinus);
                jbMinus.addActionListener(this);
                jp.add(jbMultiply);
                jbMultiply.addActionListener(this);
                jp.add(jbDivide);
                jbDivide.addActionListener(this);
                jp.add(jbEqual);
                jbEqual.addActionListener(this);
        }

        public void actionPerformed(ActionEvent arg0) {
                JButton jb = (JButton) arg0.getSource();
                if (jb == jbAdd) {
                        number1 = Integer.parseInt(jtf.getText());
                        jtf.setText("");
                        operation = \'+\';
                } else if (jb == jbMinus) {
                        number1 = Integer.parseInt(jtf.getText());
                        jtf.setText("");
                        operation = \'-\';
                } else if (jb == jbMultiply) {
                        number1 = Integer.parseInt(jtf.getText());
                        jtf.setText("");
                        operation = \'*\';
                } else if (jb == jbDivide) {
                        number1 = Integer.parseInt(jtf.getText());
                        jtf.setText("");
                        operation = \'/\';
                } else if (jb == jbEqual) {
                        number2 = Integer.parseInt(jtf.getText());
                        switch (operation) {
                        case \'+\':
                                jtf.setText(String.valueOf(number1 + number2));
                                break;
                        case \'-\':
                                jtf.setText(String.valueOf(number1 - number2));
                                break;
                        case \'*\':
                                jtf.setText(String.valueOf(number1 * number2));
                                break;
                        case \'/\':
                                jtf.setText(String.valueOf(number1 / number2));
                                break;
                        default:
                                break;
                        }
                        operation = \' \';
                } else {
                        jtf.setText(jtf.getText() + jb.getText());
                }

        }

}

[此贴子已经被作者于2010-12-12 08:29:03编辑过]