java简单计算器

来源:互联网 发布:mac android ant 编辑:程序博客网 时间:2024/06/06 02:16
package com.demo;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Demo extends JFrame implements ActionListener {    /**     * Serial Version UID     */    private static final long serialVersionUID = -169068472193786457L;    /**     * This class help close the Window.     * @author Singyuen Yip     *     */    private class WindowCloser extends WindowAdapter {       public void windowClosing(WindowEvent we) {           System.exit(0);       }    }     int i;    // Strings for Digit & Operator buttons.    private final String[] str = { "7", "8", "9", "/", "4", "5", "6", "*", "1",           "2", "3", "-", ".", "0", "=", "+" };    // Build buttons.    JButton[] buttons = new JButton[str.length];    // For cancel or reset.    JButton reset = new JButton("CE");    // Build the text field to show the result.    JTextField display = new JTextField("0");       /**     * Constructor without parameters.     */    public Demo() {       super();       // Add a panel.       JPanel panel1 = new JPanel(new GridLayout(4, 4));       // panel1.setLayout(new GridLayout(4,4));       for (i = 0; i < str.length; i++) {           buttons[i] = new JButton(str[i]);           panel1.add(buttons[i]);       }       JPanel panel2 = new JPanel(new BorderLayout());       // panel2.setLayout(new BorderLayout());       panel2.add("Center", display);       panel2.add("East", reset);       // JPanel panel3 = new Panel();       getContentPane().setLayout(new BorderLayout());       getContentPane().add("North", panel2);       getContentPane().add("Center", panel1);       // Add action listener for each digit & operator button.       for (i = 0; i < str.length; i++)           buttons[i].addActionListener(this);       // Add listener for "reset" button.       reset.addActionListener(this);       // Add listener for "display" button.       display.addActionListener(this);       // The "close" button "X".       addWindowListener(new WindowCloser());       // Initialize the window size.       setSize(800, 800);       // Show the window.       // show(); Using show() while JDK version is below 1.5.       setVisible(true);       // Fit the certain size.       pack();    }         public void actionPerformed(ActionEvent e) {       Object target = e.getSource();       String label = e.getActionCommand();       if (target == reset)           handleReset();       else if ("0123456789.".indexOf(label) > 0)           handleNumber(label);       else           handleOperator(label);    }    // Is the first digit pressed?    boolean isFirstDigit = true;    /**     * Number handling.     * @param key the key of the button.     */    public void handleNumber(String key) {       if (isFirstDigit)           display.setText(key);       else if ((key.equals(".")) && (display.getText().indexOf(".") < 0))           display.setText(display.getText() + ".");       else if (!key.equals("."))           display.setText(display.getText() + key);       isFirstDigit = false;    }       /**     * Reset the calculator.     */    public void handleReset() {       display.setText("0");       isFirstDigit = true;       operator = "=";    }     double number = 0.0;    String operator = "=";       /**     * Handling the operation.     * @param key pressed operator's key.     */    public void handleOperator(String key) {       if (operator.equals("+"))           number += Double.valueOf(display.getText());       else if (operator.equals("-"))           number -= Double.valueOf(display.getText());       else if (operator.equals("*"))           number *= Double.valueOf(display.getText());       else if (operator.equals("/"))           number /= Double.valueOf(display.getText());       else if (operator.equals("="))           number = Double.valueOf(display.getText());       display.setText(String.valueOf(number));       operator = key;       isFirstDigit = true;    }       public static void main(String[] args) {       new Demo();    }}
注意界面的排列方法,控件数组。。
0 0
原创粉丝点击