日期:2014-05-20 浏览次数:20706 次
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); } }