计算机2011级 程序语言综合课程设计
附录
A.1 题目一关键源码
(1) 类的CalculatorWindow方法 import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import java.util.LinkedList; import java.io.*; import java.lang.Object;
public class CalculatorWindow extends JFrame implements ActionListener{ NumberButton numberButton[]; OperationButton operationButton[];
JButton 小数点操作,正负号操作,退格操作,等号操作,清零操作,sin,cos,tan,log,exp,off; JMenuBar bar; JMenu help,view;
JMenuItem about,exit,information;
JTextField resultShow; //显示计算结果 JTextField showComputerProcess; //显示当前计算过程 JTextArea saveComputerProcess; //显示计算步骤 JButton saveButton,copyButton,clearButton;
LinkedList
HandleDigit handleDigit; //负责处理ActionEvent事件 HandleOperation handleOperation ; HandleBack handleBack; HandleClear handleClear; HandleEquality handleEquality;
28
计算机2011级 程序语言综合课程设计
HandleDot handleDot; HandlePOrN handlePOrN; HandleSin handleSin; HandleCos handleCos; HandleTan handleTan; HandleLog handleLog; HandleExp handleExp; HandleOff handleOff; public CalculatorWindow(){ setTitle(\计算器\
JPanel panelLeft,panelRight; list=new LinkedList
resultShow.setHorizontalAlignment(JTextField.RIGHT); resultShow.setForeground(Color.blue);
resultShow.setFont(new Font(\ resultShow.setBorder(new SoftBevelBorder(BevelBorder.LOWERED)); resultShow.setEditable(false);
resultShow.setBackground(Color.white); showComputerProcess=new JTextField();
showComputerProcess.setHorizontalAlignment(JTextField.CENTER); showComputerProcess.setFont(new Font(\ showComputerProcess.setBackground(Color.cyan); showComputerProcess.setEditable(false); saveComputerProcess=new JTextArea(); saveComputerProcess.setEditable(false);
saveComputerProcess.setFont(new Font(\宋体\ numberButton=new NumberButton[10];
handleDigit=new HandleDigit(list,resultShow,showComputerProcess); for(int i=0;i<=9;i++){
numberButton[i]=new NumberButton(i);
numberButton[i].setFont(new Font(\ numberButton[i].addActionListener(handleDigit); }
29
计算机2011级 程序语言综合课程设计
operationButton=new OperationButton[4];
handleOperation=new HandleOperation(list,resultShow,
showComputerProcess,saveComputerProcess); String 运算符号[]={\ for(int i=0;i<4;i++){
operationButton[i]=new OperationButton(运算符号[i]); operationButton[i].setFont(new Font(\ operationButton[i].addActionListener(handleOperation); }
bar=new JMenuBar(); help=new JMenu(\帮助\ view=new JMenu(\查看\ about=new JMenuItem(\关于\ exit=new JMenuItem(\退出\ help.add(about); view.add(exit); bar.add(help); bar.add(view); setJMenuBar(bar);
exit.addActionListener(this); about.addActionListener(this); 小数点操作=new JButton(\
handleDot=new HandleDot(list,resultShow,showComputerProcess); 小数点操作.addActionListener(handleDot); 正负号操作=new JButton(\
handlePOrN=new HandlePOrN(list,resultShow,showComputerProcess); 正负号操作.addActionListener(handlePOrN); 等号操作=new JButton(\
handleEquality=new HandleEquality(list,resultShow, showComputerProcess,saveComputerProcess); 等号操作.addActionListener(handleEquality); sin=new JButton(\
handleSin=new HandleSin(list,resultShow,
30
计算机2011级 程序语言综合课程设计
showComputerProcess,saveComputerProcess); sin.addActionListener(handleSin); cos=new JButton(\
handleCos=new HandleCos(list,resultShow,
showComputerProcess,saveComputerProcess); cos.addActionListener(handleCos); tan=new JButton(\
handleTan=new HandleTan(list,resultShow,
showComputerProcess,saveComputerProcess); tan.addActionListener(handleTan); log=new JButton(\
handleLog=new HandleLog(list,resultShow,
showComputerProcess,saveComputerProcess); log.addActionListener(handleLog); off=new JButton(\
handleOff=new HandleOff(list,resultShow,showComputerProcess); off.addActionListener(handleOff); exp=new JButton(\
handleExp=new HandleExp(list,resultShow,
showComputerProcess,saveComputerProcess); exp.addActionListener(handleExp); 退格操作=new JButton(\退格\
handleBack=new HandleBack(list,resultShow,showComputerProcess); 退格操作.addActionListener(handleBack); 清零操作=new JButton(\
handleClear=new HandleClear(list,resultShow,showComputerProcess); 清零操作.addActionListener(handleClear); 清零操作.setForeground(Color.red); 退格操作.setForeground(Color.red); 等号操作.setForeground(Color.red); sin.setForeground(Color.blue); cos.setForeground(Color.blue); tan.setForeground(Color.blue); log.setForeground(Color.blue);
31
计算机2011级 程序语言综合课程设计
exp.setForeground(Color.blue); 正负号操作.setForeground(Color.blue); 小数点操作.setForeground(Color.blue); panelLeft=new JPanel(); panelRight=new JPanel();
panelLeft.setLayout(new BorderLayout()); JPanel centerInLeft=new JPanel();
panelLeft.add(resultShow,BorderLayout.NORTH); panelLeft.add(centerInLeft,BorderLayout.CENTER); centerInLeft.setLayout(new GridLayout(5,5)); centerInLeft.add(numberButton[1]); centerInLeft.add(numberButton[2]); centerInLeft.add(numberButton[3]); centerInLeft.add(operationButton[0]); centerInLeft.add(off);
centerInLeft.add(numberButton[4]); centerInLeft.add(numberButton[5]); centerInLeft.add(numberButton[6]); centerInLeft.add(operationButton[1]); centerInLeft.add(退格操作); centerInLeft.add(numberButton[7]); centerInLeft.add(numberButton[8]); centerInLeft.add(numberButton[9]); centerInLeft.add(operationButton[2]); centerInLeft.add(清零操作); centerInLeft.add(numberButton[0]); centerInLeft.add(小数点操作); centerInLeft.add(正负号操作); centerInLeft.add(operationButton[3]); centerInLeft.add(等号操作); centerInLeft.add(sin); centerInLeft.add(cos); centerInLeft.add(tan); centerInLeft.add(log);
32