1、首先构建虚拟键赢棱殄蕹盘,以及排版,使用JFrame创建窗口, Button button0=new Button("0"); Button button1=new Button("1"); Button button2=new Button("2"); Button button3=new Button("3"); Button button4=new Button("4"); Button button5=new Button("5"); Button button6=new Button("6"); Button button7=new Button("7"); Button button8=new Button("8"); Button button9=new Button("9"); Button button10=new Button("."); Button button11=new Button("/"); Button button12=new Button("*"); Button button13=new Button("+"); Button button14=new Button("-"); Button button15=new Button("="); Button button16=new Button("Clear");当然可以使用循环语句创建Button[] b=new Button[17]String[] s={'1','2',...,'Clear'}for(int i=0;i<b.length;i++){ b[i].setLabel(s[i])}
2、创建文本域,构建容器: JTextField TextFeild1=new JTextField(); JPanel panel1=new JPanel(new GridLayout(4,4,4,4)); JPanel panel2=new JPanel(new GridLayout(1,2,4,4));
3、对容器添加组件 panel1.add(button1);panel1.add(button2);panel1.add(button3);panel1.add(button11); panel1.add(button4);panel1.add(button5); panel1.add(button6);panel1.add(button12); panel1.add(button7);panel1.add(button8);panel1.add(button9);panel1.add(button14); panel1.add(button0);panel1.add(button10); panel1.add(button13);panel1.add(button15); panel2.add(TextFeild1);panel2.add(button16);当然也可以使用循环语句
4、注册监听器: button1.addActionListener(this);button2.addActionListener(this);button3.addActionListener(this); button4.addActionListener(this);button5.addActionListener(this);button6.addActionListener(this); button7.addActionListener(this);button8.addActionListener(this);button9.addActionListener(this); button10.addActionListener(this);button11.addActionListener(this);button12.addActionListener(this); button13.addActionListener(this);button14.addActionListener(this);button15.addActionListener(this); button16.addActionListener(this);button0.addActionListener(this);
5、实现命令及运算: String label=e.getA罕铞泱殳ctionCommand(); sw足毂忍珩itch(label){ case "1":TextFeild1.setText(TextFeild1.getText()+"1");state=true;break; case "2":TextFeild1.setText(TextFeild1.getText()+"2");state=true;break; case "3":TextFeild1.setText(TextFeild1.getText()+"3");state=true;break; case "4":TextFeild1.setText(TextFeild1.getText()+"4");state=true;break; case "5":TextFeild1.setText(TextFeild1.getText()+"5");state=true;break; case "6":TextFeild1.setText(TextFeild1.getText()+"6");state=true;break; case "7":TextFeild1.setText(TextFeild1.getText()+"7");state=true;break; case "8":TextFeild1.setText(TextFeild1.getText()+"8");state=true;break; case "9":TextFeild1.setText(TextFeild1.getText()+"9");state=true;break; case ".":TextFeild1.setText(TextFeild1.getText()+".");state=true;break; case "0":TextFeild1.setText(TextFeild1.getText()+"0");state=true;break; default:break; } if("+".equals(label)){ result+=Double.valueOf(TextFeild1.getText()); System.out.println(result); TextFeild1.setText(""); operation=label; state=false; }else if("-".equals(label)){ result-=Double.valueOf(TextFeild1.getText()); TextFeild1.setText(""); operation=label; state=false; }else if("=".equals(label)){ switch(operation){ case "+":result+=Double.valueOf(TextFeild1.getText());break; case "-":result-=Double.valueOf(TextFeild1.getText());break; case "/":result/=Double.valueOf(TextFeild1.getText());break; case "*":result*=Double.valueOf(TextFeild1.getText());break; } TextFeild1.setText(String.valueOf(result)); }else if("/".equals(label)){ result=1; result=Double.valueOf(TextFeild1.getText())/result; TextFeild1.setText(""); operation=label; }else if("*".equals(label)){ result=1; result*=Double.valueOf(TextFeild1.getText()); TextFeild1.setText(""); operation=label; }else if("Clear".equals(label)){ TextFeild1.setText(""); result=0.0; operation=""; }思路是:每一次点击数字按钮显示点击数字,保存数字。点击运算符,保存运算指令,点击下一数字,执行运算。
6、演示:1/3=0.333333333
7、汇总代码:import java.awt.Bor蟠校盯昂derLayout;import java.awt.Button;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JFrame;import static javax.swing.JFrame.EXIT_ON_CLOSE;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;public class Calculater extends JFrame implements ActionListener{ String title="Calculator@(^-^)@"; Button button0=new Button("0"); Button button1=new Button("1"); Button button2=new Button("2"); Button button3=new Button("3"); Button button4=new Button("4"); Button button5=new Button("5"); Button button6=new Button("6"); Button button7=new Button("7"); Button button8=new Button("8"); Button button9=new Button("9"); Button button10=new Button("."); Button button11=new Button("/"); Button button12=new Button("*"); Button button13=new Button("+"); Button button14=new Button("-"); Button button15=new Button("="); Button button16=new Button("Clear"); boolean state=false; static double result=0.0; String operation; JTextField TextFeild1=new JTextField(); JPanel panel1=new JPanel(new GridLayout(4,4,4,4)); JPanel panel2=new JPanel(new GridLayout(1,2,4,4)); JLabel label1=new JLabel("Copyright ©2015-2016 Easom, All Rights Reserved"); public Calculater(){ super(); this.setTitle(title); this.setVisible(true); this.setLocationRelativeTo(null); this.setSize(500,200); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.setLayout(new BorderLayout()); panel1.add(button1);panel1.add(button2);panel1.add(button3);panel1.add(button11); panel1.add(button4);panel1.add(button5); panel1.add(button6);panel1.add(button12); panel1.add(button7);panel1.add(button8);panel1.add(button9);panel1.add(button14); panel1.add(button0);panel1.add(button10); panel1.add(button13);panel1.add(button15); panel2.add(TextFeild1);panel2.add(button16); button1.addActionListener(this);button2.addActionListener(this);button3.addActionListener(this); button4.addActionListener(this);button5.addActionListener(this);button6.addActionListener(this); button7.addActionListener(this);button8.addActionListener(this);button9.addActionListener(this); button10.addActionListener(this);button11.addActionListener(this);button12.addActionListener(this); button13.addActionListener(this);button14.addActionListener(this);button15.addActionListener(this); button16.addActionListener(this);button0.addActionListener(this); this.add(panel2,BorderLayout.NORTH); this.add(panel1,BorderLayout.CENTER); this.add(label1,BorderLayout.SOUTH); } @Override public void actionPerformed(ActionEvent e) { String label=e.getActionCommand(); switch(label){ case "1":TextFeild1.setText(TextFeild1.getText()+"1");state=true;break; case "2":TextFeild1.setText(TextFeild1.getText()+"2");state=true;break; case "3":TextFeild1.setText(TextFeild1.getText()+"3");state=true;break; case "4":TextFeild1.setText(TextFeild1.getText()+"4");state=true;break; case "5":TextFeild1.setText(TextFeild1.getText()+"5");state=true;break; case "6":TextFeild1.setText(TextFeild1.getText()+"6");state=true;break; case "7":TextFeild1.setText(TextFeild1.getText()+"7");state=true;break; case "8":TextFeild1.setText(TextFeild1.getText()+"8");state=true;break; case "9":TextFeild1.setText(TextFeild1.getText()+"9");state=true;break; case ".":TextFeild1.setText(TextFeild1.getText()+".");state=true;break; case "0":TextFeild1.setText(TextFeild1.getText()+"0");state=true;break; default:break; } if("+".equals(label)){ result+=Double.valueOf(TextFeild1.getText()); System.out.println(result); TextFeild1.setText(""); operation=label; state=false; }else if("-".equals(label)){ result-=Double.valueOf(TextFeild1.getText()); TextFeild1.setText(""); operation=label; state=false; }else if("=".equals(label)){ switch(operation){ case "+":result+=Double.valueOf(TextFeild1.getText());break; case "-":result-=Double.valueOf(TextFeild1.getText());break; case "/":result/=Double.valueOf(TextFeild1.getText());break; case "*":result*=Double.valueOf(TextFeild1.getText());break; } TextFeild1.setText(String.valueOf(result)); }else if("/".equals(label)){ result=1; result=Double.valueOf(TextFeild1.getText())/result; TextFeild1.setText(""); operation=label; }else if("*".equals(label)){ result=1; result*=Double.valueOf(TextFeild1.getText()); TextFeild1.setText(""); operation=label; }else if("Clear".equals(label)){ TextFeild1.setText(""); result=0.0; operation=""; } }}