1、计算器源代码import java.awt.*;import javax.swing.*;import java.awt.event.*;import java.io.*;public class Calculate extends JFrame private String front = , behind = ; /分别用于记录加减乘除运算符之前,之后输入的内容 private String op; /用于记录运算符 private String re;/用于存储运算结果的字符串格式 private boolean flag = false; /用于记录是否按下了运算符 private b
2、oolean flag1 = false;/用于判断是否输入了点运算符 private double result;/用于存储运算结果 private boolean flag2 = false;/用于判断是否输入了数字 private boolean flag3 = false;/用于判断是否按下了等号运算符 JPanel contentPane; JTextField txtResult = new JTextField(0); JButton btnNull = new JButton(sqrt); JButton btnFour = new JButton(4); JButton bt
3、nFive = new JButton(5); JButton btnSix = new JButton(6); JButton btnDecrease = new JButton(-); JButton btnBegin = new JButton(C); JButton btnOne = new JButton(1); JButton btnTwo = new JButton(2); JButton btnThree = new JButton(3); JButton btnMultiply = new JButton(*); JButton btnCancel = new JButton
4、(); JButton btnZero = new JButton(0); JButton btnMinus = new JButton(+/-); JButton btnPoint = new JButton(.); JButton btnDivide = new JButton(/); JButton btnEqual = new JButton(=); JButton btnIncrease = new JButton(+); JButton btnSeven = new JButton(7); JButton btnEight = new JButton(8); JButton btn
5、Nine = new JButton(9);public Calculate() try setDefaultCloseOperation(EXIT_ON_CLOSE); jbInit(); catch (Exception exception) exception.printStackTrace(); private void jbInit() throws Exception contentPane = (JPanel) getContentPane(); contentPane.setLayout(null); this.setResizable(false); setSize(new
6、Dimension(400, 300); setTitle(计算器); txtResult.setEnabled(false); txtResult.setFont(new java.awt.Font(Dialog, Font.PLAIN, 20); txtResult.setEditable(false); txtResult.setHorizontalAlignment(SwingConstants.RIGHT); txtResult.setBounds(new Rectangle(33, 19, 310, 34); btnNull.setBounds(new Rectangle(298,
7、 70, 46, 37); btnNull.setFont(new java.awt.Font(Dialog, Font.PLAIN, 12); /btnNull.addActionListener(new FrameCalculate_btnNull_actionAdapter(this); btnFour.setBounds(new Rectangle(33, 120, 46, 37); btnFour.setFont(new java.awt.Font(Dialog, Font.PLAIN, 20); btnFive.setBounds(new Rectangle(101, 120, 4
8、6, 37); btnFive.setFont(new java.awt.Font(Dialog, Font.PLAIN, 20); btnSix.setBounds(new Rectangle(167, 119, 46, 37); btnSix.setFont(new java.awt.Font(Dialog, Font.PLAIN, 20); btnDecrease.setBounds(new Rectangle(234, 120, 46, 37); btnDecrease.setFont(new java.awt.Font(Dialog, Font.PLAIN, 20); btnBegi
9、n.setBounds(new Rectangle(298, 121, 46, 37); btnBegin.setFont(new java.awt.Font(Dialog, Font.PLAIN, 15); btnBegin.addActionListener(new Calculate_btnBegin_actionAdapter(this); btnOne.setBounds(new Rectangle(33, 172, 46, 37); btnOne.setFont(new java.awt.Font(Dialog, Font.PLAIN, 20); btnTwo.setBounds(
10、new Rectangle(101, 172, 46, 37); btnTwo.setFont(new java.awt.Font(Dialog, Font.PLAIN, 20); btnThree.setBounds(new Rectangle(167, 172, 46, 37); btnThree.setFont(new java.awt.Font(Dialog, Font.PLAIN, 20); btnMultiply.setBounds(new Rectangle(234, 172, 46, 37); btnMultiply.setFont(new java.awt.Font(Dial
11、og, Font.PLAIN, 20); btnCancel.setBounds(new Rectangle(298, 172, 46, 37); btnCancel.setFont(new java.awt.Font(Dialog, Font.PLAIN, 12); btnCancel.addActionListener(new Calculate_btnCancel_actionAdapter(this); btnZero.setBounds(new Rectangle(33, 222, 46, 37); btnZero.setFont(new java.awt.Font(Dialog,
12、Font.PLAIN, 20); /加载数字0-9的监听事件 btnZero.addActionListener(new Calculate_btnZero_actionAdapter(this); btnOne.addActionListener(new Calculate_btnZero_actionAdapter(this); btnTwo.addActionListener(new Calculate_btnZero_actionAdapter(this); btnThree.addActionListener(new Calculate_btnZero_actionAdapter(t
13、his); btnFour.addActionListener(new Calculate_btnZero_actionAdapter(this); btnFive.addActionListener(new Calculate_btnZero_actionAdapter(this); btnSix.addActionListener(new Calculate_btnZero_actionAdapter(this); btnSeven.addActionListener(new Calculate_btnZero_actionAdapter(this); btnEight.addAction
14、Listener(new Calculate_btnZero_actionAdapter(this); btnNine.addActionListener(new Calculate_btnZero_actionAdapter(this); btnMinus.setBounds(new Rectangle(101, 222, 46, 37); btnMinus.setFont(new java.awt.Font(Dialog, Font.PLAIN, 10); btnMinus.addActionListener(new Calculate_btnMinus_actionAdapter(thi
15、s); btnPoint.setBounds(new Rectangle(167, 222, 46, 37); btnPoint.setFont(new java.awt.Font(Dialog, Font.PLAIN, 30); btnPoint.setHorizontalTextPosition(SwingConstants.CENTER); btnPoint.addActionListener(new Calculate_btnPoint_actionAdapter(this); btnDivide.setBounds(new Rectangle(234, 222, 46, 37); b
16、tnDivide.setFont(new java.awt.Font(Dialog, Font.PLAIN, 20); btnEqual.setBounds(new Rectangle(298, 222, 46, 37); btnEqual.setFont(new java.awt.Font(Dialog, Font.PLAIN, 20); btnEqual.addActionListener(new Calculate_btnEqual_actionAdapter(this); btnIncrease.setBounds(new Rectangle(234, 70, 46, 37); btn
17、Increase.setFont(new java.awt.Font(Dialog, Font.PLAIN, 20); /加载加减乘除运算符的监听事件 btnIncrease.addActionListener(new Calculate_btnIncrease_actionAdapter(this); btnDecrease.addActionListener(new Calculate_btnIncrease_actionAdapter(this); btnMultiply.addActionListener(new Calculate_btnIncrease_actionAdapter(
18、this); btnDivide.addActionListener(new Calculate_btnIncrease_actionAdapter(this); btnSeven.setBounds(new Rectangle(33, 70, 46, 37); btnSeven.setFont(new java.awt.Font(Dialog, Font.PLAIN, 20); btnEight.setBounds(new Rectangle(101, 70, 46, 37); btnEight.setFont(new java.awt.Font(Dialog, Font.PLAIN, 20
19、); btnNine.setBounds(new Rectangle(167, 70, 46, 37); btnNine.setFont(new java.awt.Font(Dialog, Font.PLAIN, 20); contentPane.add(btnFive); contentPane.add(btnSix); contentPane.add(btnDecrease); contentPane.add(btnBegin); contentPane.add(btnOne); contentPane.add(btnTwo); contentPane.add(btnThree); con
20、tentPane.add(btnMultiply); contentPane.add(btnCancel); contentPane.add(btnMinus); contentPane.add(btnPoint); contentPane.add(btnDivide); contentPane.add(btnEqual); contentPane.add(btnEight); contentPane.add(btnNine); contentPane.add(btnFour); contentPane.add(btnSeven); contentPane.add(btnIncrease);
21、contentPane.add(btnNull); contentPane.add(txtResult); contentPane.add(btnZero); public void btnZero_actionPerformed(ActionEvent e) if (flag) /如果刚刚按下了运算符 txtResult.setText(); if (flag1) /判断之前是否输入了点运算符 txtResult.setText(0. + e.getActionCommand(); flag1 = false; else txtResult.setText(e.getActionComman
22、d(); flag2 = true; else int num = txtResult.getText().indexOf(.); if (num 0 & !txtResult.getText().equals(0) txtResult.setText(txtResult.getText() + e.getActionCommand(); else if (num = 0 & txtResult.getText().equals(0) txtResult.setText(0. + e.getActionCommand(); else if (num = 0 & !txtResult.getTe
23、xt().equals(0) txtResult.setText(txtResult.getText() + e.getActionCommand(); flag = false; flag3=false; public void btnIncrease_actionPerformed(ActionEvent e) if(flag3) txtResult.setText(txtResult.getText(); op = e.getActionCommand(); /得到刚刚按下的运算符 front = txtResult.getText(); /记录加减乘除运算符之前输入的内容 else i
24、f (flag2) ActionEvent ee = new ActionEvent(qq, 1, pp); btnEqual_actionPerformed(ee); op = e.getActionCommand(); /得到刚刚按下的运算符 front = re; flag2 = false; else front = txtResult.getText(); /记录加减乘除运算符之前输入的内容 op = e.getActionCommand(); /得到刚刚按下的运算符 flag3=false; flag = true; /记录已经按下了加减乘除运算符的其中一个 public void
25、 btnEqual_actionPerformed(ActionEvent e) if(!flag3)/未曾按下等于运算符 behind = txtResult.getText(); else front = re; try double a1 = Double.parseDouble(front); double b1 = Double.parseDouble(behind); if (op = +) result = a1 + b1; else if (op = -) result = a1 - b1; else if (op = *) result = a1 * b1; else res
26、ult = a1 / b1; Double r = new Double(result); re = r.toString(result); txtResult.setText(re); catch (ArithmeticException ce) txtResult.setText(除数不能为零); catch (Exception ee) if (!flag3) flag3 = true; public void btnPoint_actionPerformed(ActionEvent e) int num=txtResult.getText().indexOf(.); if(num=0)
27、/若文本框中含有负号 String a=txtResult.getText().replaceAll(-,); txtResult.setText(a); else if(flag) txtResult.setText(0); else txtResult.setText(-+txtResult.getText(); public void btnCancel_actionPerformed(ActionEvent e) /退格事件处理方法 String str=txtResult.getText(); if(str.length() = 1)/如文本框中只剩下最后一个字符,将文本框内容置为0
28、 txtResult.setText(0); if(str.length()1) str=str.substring(0,str.length()-1); txtResult.setText(str); public static void main(String args) Calculate fc = new Calculate(); fc.setSize(400,310); fc.setLocation(200,150); fc.setVisible(true); class Calculate_btnCancel_actionAdapter implements ActionListener private Calculate adaptee; Calculate_btnCancel_actionAdapt
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2