日期:2014-05-20  浏览次数:20663 次

计算器的一个代码 运算不会写了
Java code
package CalcTest;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.ScrollPane;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyleContext;

import org.w3c.dom.Text;

import com.sun.org.apache.bcel.internal.generic.JsrInstruction;

public class Calc extends JFrame implements ActionListener{
    public final int temp = 8;//定义文本框最多输入字符
    String copy;
    boolean enter;
    double d1,d2;
    JPanel ButtonPanel,okPanel;
    JButton jb[];
    JTextField jtf;
    JScrollPane jsp;
    JButton jia,jian,cheng,chu,dian,dengyu;
    JMenuBar jmb;
    JMenu bjM,ckM,bzM;
    JTextArea jta;
    JMenuItem copyM,pasteM,closeM,helpM,gyM;
    JButton b1;
    boolean start;
    public Calc(){
        enter = true;
        start =true;
        
        
        Container c = getContentPane();
        //**以下为菜单之类的
        jmb = new JMenuBar();
        bjM = new JMenu("编辑(E)");
        ckM = new JMenu("查看(V)");
        bzM = new JMenu("帮助(H)");
        
        copyM = new JMenuItem("复制(C)");
        pasteM = new JMenuItem("粘贴(V)");
        closeM = new JMenuItem("关闭(E)");
        helpM = new JMenuItem("帮助主题");
        gyM = new JMenuItem("关于计算器");
        
        jmb.add(bjM);
        jmb.add(ckM);
        jmb.add(bzM);
        
        bjM.add(copyM);
        bjM.add(pasteM);
        ckM.add(closeM);
        bzM.add(helpM);
        bzM.add(gyM);
        setJMenuBar(jmb);//显示菜单条
        //**以上为菜单类的
        
        
        //**以下注册菜单监听器
        copyM.addActionListener(this);
        pasteM.addActionListener(this);
        closeM.addActionListener(this);
        helpM.addActionListener(this);
        gyM.addActionListener(this);
        //**以上注册菜单监听器
        
        
        
        jtf = new JTextField(35);
        jtf.setText("0.");
        jtf.setEditable(false);
        jtf.setComponentOrientation(java.awt.ComponentOrientation.RIGHT_TO_LEFT);//设置文本框从右往左
        
        //**以下为按钮设置
        jb = new JButton[10];
        
        jia = new JButton("+");
        jian = new JButton("-");
        cheng = new JButton("*");
        chu = new JButton("\\");
        dian = new JButton(".");
        dengyu = new JButton("=");
        
        jia.addActionListener(this);
        jian.addActionListener(this);
        cheng.addActionListener(this);
        chu.addActionListener(this);
        dian.addActionListener(this);
        dengyu.addActionListener(this);
        
        ButtonPanel = new JPanel();
        for(int i=0;i<jb.length;i++){
            jb[i] = new JButton(Integer.toString(i));//实现将整形转字符串
            jb[i].setForeground(new Color(99,00,00));
            jb[i].addActionListener(Calc.this);//为每个按钮注册监听器
        }
        ButtonPanel.setLayout(new GridLayout(4,4));//设置格子布局4行4列
        ButtonPanel.add(jb[1]);
        ButtonPanel.add(jb[2]);
        ButtonPanel.add(jb[3]);
        ButtonPanel.add(jia);
        ButtonPanel.add(jb[4]);
        ButtonPanel.add(jb[5]);
        ButtonPanel.add(jb[6]);
        ButtonPanel.add(jian);
        ButtonPanel.add(jb[7]);
        ButtonPanel.add(jb[8]);
        ButtonPanel.add(jb[9]);
        ButtonPanel.add(cheng);
        ButtonPanel.add(jb[0]);
        ButtonPanel.add(dian);
        ButtonPanel.add(dengyu);
        ButtonPanel.add(chu);
        //**以上为按钮设置
        
        //**以下为帮助主题
        jta = new JTextArea(5,10);
        jsp = new JScrollPane(jta);
        jta.setEditable(false);
        jta.setFont(new Font("楷体",Font.BOLD,20));
        jta.append("执行简单计算\n");
        jta.append("1.  键入计算的第一个数字。\n");
        jta.append("2.  单击“+”执行加、“-”执行减、“*”执行乘或“/”执行除。\n");
        jta.append("3.  键入计算的下一个数字。\n");
        jta.append("4.  输入所有剩余的运算符和数字。\n");
        jta.append("5.  单击“=”。\n");
        
        //**以上为帮助主题
        
        //**以下为清零
        okPanel = new JPanel();
        b1 = new JButton("C");
        okPanel.add(b1);
        //**以上为清零
        b1.addActionListener(this);//注册监听器
        c.add(jtf,BorderLayout.NORTH);
        c.add(ButtonPanel,BorderLayout.CENTER);
        c.add(okPanel,BorderLayout.SOUTH);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        
    }
    public void actionPerformed(ActionEvent e) {
        Object temp = e.getSource();
        String input = e.getActionCommand();
        System.out.println(input);
        
        if(start){
            jtf.setText("");//按下按钮的一瞬间清空
            start = false;
        }
        jtf.setText(jtf.getText());
        
        
        
        
        //将按钮挨个转换为字符串
        for(int i=0;i<jb.length;i++){
            if(temp==jb[i] && enter==true){
                jtf.setText(jtf.getText() + Integer.toString(i));
            }
        }
        
        //**以下为MemuItem进行事件
        if(temp==copyM){
            copy = jtf.getText();
        }
        if(temp==pasteM){
            jtf.setText(copy);
        }
        
        if(temp==closeM){
            dispose();
            System.exit(0);
        }
        if(temp==gyM){
            //JOptionPane.showMessageDialog(gyM,jsp);
            JOptionPane.showMessageDialog(gyM, jsp);
        }
        if(temp == helpM){
            JOptionPane.showMessageDialog(helpM,"使用“计算器”可以完成任意的通常借助手持计算器来完成的标准运算。 \n “计算器”可用于基本的算术运算,比如加减运算等。 \n  同时它还具有科学计算器的功能,比如对数运算和阶乘运算等。");
        }
        //**以上为MemuItem进行事件
    }
    public static void main(String[] args) {
        Calc cc = new Calc();
        cc.setTitle("计算器 v1.0");
        cc.setSize(400, 400);
        cc.setBounds(300, 300, 300, 300);
        cc.setVisible(true);
    }

    

}