此小程序实现了计算器的基本功能:
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class SimpleCalc extends JFrame{ private static final long serialVersionUID = 1L; String[] labels = {"←","CE","±","√", "7","8","9","/", "4","5","6","*", "1","2","3","-", "0",".","=","+"}; JButton[] btn; JTextField tf; Double n1 = 0.0, n2 = 0.0; String opt = ""; SimpleCalc(String name) { super(name); this.setVisible(true); this.setBounds(400,300,300,400); this.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); } public void init() { tf = new JTextField(); tf.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT); tf.setFont(new Font("宋体", 30,20)); btn = new JButton[labels.length]; for(int i=0;i<labels.length;i++) { btn[i] = new JButton(labels[i]); btn[i].setForeground(Color.blue); //System.out.print(btn[i].getActionCommand()+" "); } JPanel p = new JPanel(); p.setLayout(new GridLayout(5,5,3,3)); for(int i=0;i<labels.length;i++) p.add(btn[i]); this.add(BorderLayout.NORTH,tf); this.add(BorderLayout.CENTER,p); this.pack(); for(int i=0;i<labels.length;i++) btn[i].addActionListener(new Monitor()); } public static void main(String[] args) { // TODO Auto-generated method stub new SimpleCalc("java简易计算器").init(); } class Monitor implements ActionListener { @Override public void actionPerformed(ActionEvent e) { try{ String cmd = e.getActionCommand(); if(cmd.equals("0")||cmd.equals("1")||cmd.equals("2")||cmd.equals("3")||cmd.equals("4")|| cmd.equals("5")||cmd.equals("6")||cmd.equals("7")||cmd.equals("8")||cmd.equals("9")) { tf.setText(tf.getText().trim()+e.getActionCommand()); n1 = Double.parseDouble(tf.getText().trim()); } if(cmd.equals("←")) { tf.setText(tf.getText().trim().substring(0,tf.getText().trim().length()-1)); } else if(cmd.equals("CE")) { tf.setText(""); } else if(cmd.equals("±")) { n1 = Double.parseDouble(tf.getText().trim()); tf.setText(-n1+""); } else if(cmd.equals("√")) { n1 = Double.parseDouble(tf.getText().trim()); tf.setText(Math.sqrt(n1)+""); } else if(cmd.equals("+")) { n2 = Double.parseDouble(tf.getText().trim()); opt = "+"; tf.setText(""); } else if(cmd.equals("-")) { opt = "-"; n2 = Double.parseDouble(tf.getText().trim()); tf.setText(""); } else if(cmd.equals("*")) { opt = "*"; n2 = Double.parseDouble(tf.getText().trim()); tf.setText(""); } else if(cmd.equals("/")) { opt = "/"; n2 = Double.parseDouble(tf.getText().trim()); tf.setText(""); } else if(cmd.equals(".")) { if(tf.getText().trim().indexOf(".") != -1) //字符串中已经包含了小数点不做任何操作 { } else //如果没有小数点 { if(tf.getText().trim().equals("0"))//如果开始为0 { tf.setText(("0"+e.getActionCommand()).toString()); } else if(tf.getText().trim().equals(""))//如果初时显示为空不做任何操作 { } else { tf.setText((tf.getText()+e.getActionCommand()).toString()); } } } else if(cmd.equals("=")) { if(opt.equals("+")) tf.setText((n2+n1)+""); else if(opt.equals("-")) tf.setText((n2-n1)+""); else if(opt.equals("*")) tf.setText((n2*n1)+""); else if(opt.equals("/")) { if(n1 == 0) tf.setText("除数不能为0"); else tf.setText((n2/n1)+""); } } }catch(Exception ee){} } } }
运行结果:
时间: 2024-10-25 12:46:43