//简单的功能基本实现,代码清晰易懂 import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; public class jisuan { public static void main(String[] args) { CreatFrame cf = new CreatFrame(); } } class CreatFrame extends JFrame { JTextField jf, jf1; JPanel panel1, panel2; JButton jb1, jb2, jb3, jb4, jb5, jb6, jb7, jb8, jb9, jb10, jb11, jb12, jb13, jb14, jb15, jb16, jb17, jb18, jb19; GridLayout gl1, gl2; StringBuffer str; Double x, y; int z; public CreatFrame() { // 实例一个布局管理器 gl1 = new GridLayout(5, 4, 5, 5); jf = new JTextField(27); jf.setHorizontalAlignment(JTextField.CENTER); jf.setText("0"); jf.setEnabled(false); jf1 = new JTextField(); jf1.setText(""); jf1.setEditable(false); // 实例化所有BUtton jb1 = new JButton("back"); jb1.addActionListener(new jbListener()); jb2 = new JButton("CE"); jb2.addActionListener(new jbListener()); jb3 = new JButton("C"); jb3.addActionListener(new jbListener()); jb4 = new JButton("7"); jb4.addActionListener(new jbListener()); jb5 = new JButton("8"); jb5.addActionListener(new jbListener()); jb6 = new JButton("9"); jb6.addActionListener(new jbListener()); jb7 = new JButton("/"); jb7.addActionListener(new jbListener()); jb8 = new JButton("4"); jb8.addActionListener(new jbListener()); jb9 = new JButton("5"); jb9.addActionListener(new jbListener()); jb10 = new JButton("6"); jb10.addActionListener(new jbListener()); jb11 = new JButton("*"); jb11.addActionListener(new jbListener()); jb12 = new JButton("1"); jb12.addActionListener(new jbListener()); jb13 = new JButton("2"); jb13.addActionListener(new jbListener()); jb14 = new JButton("3"); jb14.addActionListener(new jbListener()); jb15 = new JButton("-"); jb15.addActionListener(new jbListener()); jb16 = new JButton("0"); jb16.addActionListener(new jbListener()); jb17 = new JButton("."); jb17.addActionListener(new jbListener()); jb18 = new JButton("="); jb18.addActionListener(new jbListener()); jb19 = new JButton("+"); jb19.addActionListener(new jbListener()); panel1 = new JPanel(); panel2 = new JPanel(); panel2 = new JPanel(); str = new StringBuffer(); panel2.setLayout(gl1); panel1.add(jf); // 把输入框添加到panel1容器中 panel2.add(jf1); panel2.add(jb1); // 把以下BUtton添加到panel2容器中 panel2.add(jb2); panel2.add(jb3); panel2.add(jb4); panel2.add(jb5); panel2.add(jb6); panel2.add(jb7); panel2.add(jb8); panel2.add(jb9); panel2.add(jb10); panel2.add(jb11); panel2.add(jb12); panel2.add(jb13); panel2.add(jb14); panel2.add(jb15); panel2.add(jb16); panel2.add(jb17); panel2.add(jb18); panel2.add(jb19); add(panel1, BorderLayout.NORTH); // 添加容器panel1; add(panel2, BorderLayout.SOUTH); // 添加容器panel2; setBounds(100, 100, 320, 280);// 设置框架大小 setResizable(false); // 禁止框架的调整大小 this.setTitle("计算器-Worm1.0版"); this.pack(); this.setDefaultCloseOperation(this.EXIT_ON_CLOSE); // 关闭窗口事件 this.setVisible(true); } class jbListener implements ActionListener { public void actionPerformed(ActionEvent e) { if (e.getActionCommand() == "CE") { //响应CE事件 jf.setText("0"); str.setLength(0); } else if (e.getActionCommand() == "C") { //响应C事件 jf.setText("0"); str.setLength(0); } else if (e.getActionCommand() == "+") { x = Double.parseDouble(jf.getText().trim()); str.setLength(0); y = 0d; z = 0; } else if (e.getActionCommand() == "-") { x = Double.parseDouble(jf.getText().trim()); str.setLength(0); y = 0d; z = 1; } else if (e.getActionCommand() == "*") { x = Double.parseDouble(jf.getText().trim()); str.setLength(0); y = 0d; z = 2; } else if (e.getActionCommand() == "/") { x = Double.parseDouble(jf.getText().trim()); str.setLength(0); y = 0d; z = 3; } else if (e.getActionCommand() == "=") { //点击“=”号时进行相应运算 str.setLength(0); switch (z) { case 0: jf.setText("" + (x + y)); break; case 1: jf.setText("" + (x - y)); break; case 2: jf.setText("" + (x * y)); break; case 3: jf.setText("" + (x / y)); break; } } else if (e.getActionCommand() == ".") { //响应小数点事件 if (jf.getText().trim().indexOf(".") != -1) { //判断是否已含有小数点,如果有不做任何操作 } else { if (jf.getText().trim().equals("0")) { //如果没有小数点,如果第一位为0则在0后面输入. str.setLength(0); jf.setText(str.append("0" + e.getActionCommand()) .toString()); } else if (jf.getText().trim().equals(" ")) { } else { //否则在数字后输入. jf.setText(str.append(e.getActionCommand()).toString()); } } y = 0d; } else { if (e.getActionCommand() == "0") { //如果初始为0 则不做任何操作 if (jf.getText().trim().equals("0")) { } else { jf.setText(str.append(e.getActionCommand()).toString()); y = Double.parseDouble(jf.getText().trim()); } } else if (e.getActionCommand() == "back") { //响应删除事件 if (!jf.getText().trim().equals("0")) { //如果初始不为0 if (str.length() != 1) { jf.setText(str.delete(str.length() - 1, //如果长度大于1,进行删除操作 str.length()).toString()); } else { jf.setText("0"); //否则将数据清零 str.setLength(0); } } y = Double.parseDouble(jf.getText().trim()); } else { // 响应 1-9数字键事件 jf.setText(str.append(e.getActionCommand()).toString()); y = Double.parseDouble(jf.getText().trim()); } } } } } 03:42:11