程序是由Java中的可视化界面swing类来实现,废话不多说,直接上源码:
import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class Calculate { public static void main(String[] args) { new ComputFrame("计算器"); } } class ComputFrame extends JFrame implements ActionListener{ JTextField inputText; JPanel numberPanel,operPanel; JButton[] numBtn,operBtn; public ComputFrame(String title) { super(title); this.setSize(600,500); this.setLocationRelativeTo(null); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); initComp(); addComptoFrame(); this.validate(); } private void addComptoFrame() { this.add(inputText,BorderLayout.NORTH); this.add(numberPanel,BorderLayout.CENTER); this.add(operPanel,BorderLayout.EAST); } private void initComp() { inputText=new JTextField(); numberPanel=new JPanel(); numberPanel.setLayout(new GridLayout(3,3)); operPanel=new JPanel(); operPanel.setLayout(new GridLayout(6,1)); numBtn=new JButton[9]; for(int i=0;i<numBtn.length;i++){ numBtn[i]=new JButton(""+i); numberPanel.add(numBtn[i]); numBtn[i].addActionListener(this); } operBtn=new JButton[6]; String oper[]={"del","+","-","*","/","="}; for(int i=0;i<oper.length;i++){ operBtn[i]=new JButton(oper[i]); operPanel.add(operBtn[i]); operBtn[i].addActionListener(this); } } String str=""; @Override public void actionPerformed(ActionEvent e) { str+=e.getActionCommand(); inputText.setText(str); if("=".equalsIgnoreCase(e.getActionCommand())){ String[] a=str.split("\\D+"); String[] oper=str.split("\\d+"); int b=Integer.parseInt(a[0]); int c=Integer.parseInt(a[1]); if("+".equals(oper[1])){ inputText.setText(a[0]+oper[1]+a[1]+"="+String.valueOf(b+c)); }if("-".equals(oper[1])){ inputText.setText(a[0]+oper[1]+a[1]+"="+String.valueOf(b-c)); }if("*".equals(oper[1])){ inputText.setText(a[0]+oper[1]+a[1]+"="+String.valueOf(b*c)); }if("/".equals(oper[1])){ inputText.setText(str+String.valueOf(b/c)); } } if("del".equals(e.getActionCommand())){ str=str.substring(0,str.length()-4); inputText.setText(str); } } }
运行结果如下:7*8=56