
语言程序设计资料:Java计算器源码.doc
25页计算器本计算器有显示过程和不显示过程两种功能,其中不显示过程为普通计算器,类似于windows自带的计算器;显示过程的,可以显示预算过程,其中包含所需应用的部分函数,以及格式化功能(最左上角,第一个键格式化,然后输入需要格式化的数位,然后点第二个数,显示格式化结果),当一次运算结束后,会在右边自动显示运算过程,并且运算过程处有保存,复制粘贴清除功能代码如下:主类:import ZF.*;public class JiSuanQi { public static void main(String[] args) { Calculator c = new Calculator("计算器"); }}包ZF中的类:Calculator类package ZF;/** * 计算器布局界面 */import java.io.*;import java.awt.*;import javax.swing.*;import java.awt.event.*;public class Calculator extends JFrame implements ActionListener { static int xg = 1;// 用于判断是否显示过程,初始状态为显示 JSplitPane jsp1, jsp2, jsp3; static JTextField jtf;// 文本框 static JTextArea jta;// 保存等的历史文本区 public static String zc;// 用来暂时存储数字,实现第一个菜单选项 JScrollPane JS;// 专门用于给文本区提供滚动条 public static FileDialog load, save;// 声明引入对话框 BufferedReader in;// FileReader reader;// JP1 jp1; JP2 jp2; JP3 jp3; JP4 jp4; JP5 jp5; // 菜单条 JMenuBar mb; JMenu m0, m1, m2; JMenuItem m01, m02, m03, m04, m11, m12, m21, m22; public Calculator(String s) { super(s); Container con = getContentPane(); // 桌面 jp1 = new JP1(); jp2 = new JP2(); jp3 = new JP3(); jp4 = new JP4(); jp5 = new JP5(); jta = new JTextArea(); jta.setEditable(false); JS = new JScrollPane(jta); jsp1 = new JSplitPane(JSplitPane.VERTICAL_SPLIT, false, jp1, jp2); jsp2 = new JSplitPane(JSplitPane.VERTICAL_SPLIT, false, jp3, JS); jsp3 = new JSplitPane(JSplitPane.VERTICAL_SPLIT, false, jp4, jp5); jtf = new JTextField(); jtf.setText(String.valueOf(0)); jtf.setEditable(false); jtf.setBackground(Color.white); load = new FileDialog(this, "读取历史运算过程", FileDialog.LOAD); load.setVisible(false); load.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { load.setVisible(false); } }); save = new FileDialog(this, "保存历史运算过程", FileDialog.SAVE); save.setVisible(false); save.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { save.setVisible(false); } }); // 菜单条 mb = new JMenuBar(); m0 = new JMenu("编辑"); m1 = new JMenu("查看"); m2 = new JMenu("帮助"); m01 = new JMenuItem("复制"); m02 = new JMenuItem("粘贴"); m03 = new JMenuItem("读取"); m04 = new JMenuItem("关闭"); m01.addActionListener(this); m02.addActionListener(this); m03.addActionListener(this); m04.addActionListener(this); m11 = new JMenuItem("不显过程"); m12 = new JMenuItem("显示过程"); m11.addActionListener(this); m12.addActionListener(this); m21 = new JMenuItem("帮助主题"); m22 = new JMenuItem("关于计算器"); m21.addActionListener(this); m22.addActionListener(this); m0.add(m01); m0.add(m02); m0.add(m03); m0.add(m04); m1.add(m11); m1.add(m12); m2.add(m21); m2.addSeparator(); m2.add(m22); mb.add(m0); mb.add(m1); mb.add(m2); setJMenuBar(mb); con.add(jtf, BorderLayout.NORTH); con.add(jsp1, BorderLayout.CENTER); con.add(jsp2, BorderLayout.EAST); con.add(jsp3, BorderLayout.WEST); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); setBounds(100, 100, 800, 260); setResizable(false); setVisible(true); validate(); } public void actionPerformed(ActionEvent e) { if (!jtf.getText().equals("error")) { if (e.getSource() == m01) { zc = jtf.getText(); } else if (e.getSource() == m02) { if (zc != null) { if (xg == 1) { if (jtf.getText().equals("0")) jtf.setText(zc); else jtf.setText(jtf.getText() + zc); } else jtf.setText(zc); } } } if (e.getSource() == m03) { //读取文件 Calculator.load.setVisible(true); Calculator.jta.setText(null); String s; if(Calculator.load.getFile()!=null) { try{ File file=new File(Calculator.load.getDirectory(),Calculator.load.getFile()); reader=new FileReader(file); in=new BufferedReader(reader); while((s=in.readLine())!=null) {Calculator.jta.append(s+\n);} in.close(); reader.close(); }catch(IOException e2){Calculator.jta.append("读取错误");} } } else if (e.getSource() == m04) { System.exit(0); } else if (e.getSource() == m11) { // 换窗体大小,同时换规则 setSize(320, 260); remove(jsp2); remove(jsp3); JP2.sf = 0; jtf.setText(String.valueOf(0)); xg = 0; // 改变菜单选项的可选性 m03.setEnabled(false); m04.setEnabled(false); // 换对齐方式 JP2.sf = 0; jtf.setEditable(false); jtf.setBackground(Color.white); jtf.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); validate(); } else if (e.getSource() == m12) { setSize(800, 260); add(jsp2, BorderLayout.EAST); add(jsp3, BorderLayout.WEST); JP2.sf = 0; jtf.setText(String.valueOf(0)); xg = 1; m03.setEnabled(true); m04.setEnabled(true); JP2.eg = 0; jtf.setEditable(false); jtf.setBackground(Color.white); jtf.s。
