用java编辑简易计算器我的思路是:文本1和3监听数字0~9和“。”

1个回答

  • import java.awt.BorderLayout;

    import java.awt.Button;

    import java.awt.Container;

    import java.awt.GridLayout;

    import java.awt.event.ActionEvent;

    import java.awt.event.ActionListener;

    import java.awt.event.KeyEvent;

    import java.awt.event.KeyListener;

    import java.awt.event.WindowAdapter;

    import java.awt.event.WindowEvent;

    import javax.swing.JFrame;

    import javax.swing.JOptionPane;

    import javax.swing.JPanel;

    import javax.swing.JTextField;

    import javax.swing.WindowConstants;

    public class Caculator extends JFrame implements ActionListener,KeyListener{

    private JTextField tf=new JTextField();

    private float x=0;

    private float y=0;

    private int code=0;

    private boolean enable;

    private boolean first;

    private String str="";

    public Caculator(){

    Container ct=this.getContentPane();

    this.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);

    tf.setHorizontalAlignment(JTextField.RIGHT);

    //tf.setText("0");

    enable=true;

    first=true;

    ct.add(tf,BorderLayout.NORTH);

    JPanel panel=new JPanel();

    panel.setLayout(new GridLayout(4,4));

    this.addWindowListener(new WindowAdapter(){

    public void windowClosing(WindowEvent e){

    if(JOptionPane.YES_OPTION==JOptionPane.showConfirmDialog(Caculator.this,"确定要关闭程序吗?","提示",JOptionPane.OK_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE)){

    e.getWindow().setVisible(false);

    e.getWindow().dispose();

    System.exit(0);

    }

    }

    });

    Button btn=null;

    btn=new Button("1");

    panel.add(btn);

    btn.addActionListener(this);

    btn.addKeyListener(this);

    btn=new Button("2");

    panel.add(btn);

    btn.addActionListener(this);

    btn.addKeyListener(this);

    btn=new Button("3");

    panel.add(btn);

    btn.addActionListener(this);

    btn.addKeyListener(this);

    btn=new Button("+");

    panel.add(btn);

    btn.addActionListener(this);

    btn.addKeyListener(this);

    btn=new Button("4");

    panel.add(btn);

    btn.addActionListener(this);

    btn.addKeyListener(this);

    btn=new Button("5");

    panel.add(btn);

    btn.addActionListener(this);

    btn.addKeyListener(this);

    btn=new Button("6");

    panel.add(btn);

    btn.addActionListener(this);

    btn.addKeyListener(this);

    btn=new Button("-");

    panel.add(btn);

    btn.addActionListener(this);

    btn.addKeyListener(this);

    btn=new Button("7");

    panel.add(btn);

    btn.addActionListener(this);

    btn.addKeyListener(this);

    btn=new Button("8");

    panel.add(btn);

    btn.addActionListener(this);

    btn.addKeyListener(this);

    btn=new Button("9");

    panel.add(btn);

    btn.addActionListener(this);

    btn.addKeyListener(this);

    btn=new Button("*");

    panel.add(btn);

    btn.addActionListener(this);

    btn.addKeyListener(this);

    btn=new Button("0");

    panel.add(btn);

    btn.addActionListener(this);

    btn.addKeyListener(this);

    btn=new Button(".");

    panel.add(btn);

    btn.addActionListener(this);

    btn.addKeyListener(this);

    btn=new Button("/");

    panel.add(btn);

    btn.addActionListener(this);

    btn.addKeyListener(this);

    btn=new Button("=");

    panel.add(btn);

    btn.addActionListener(this);

    btn.addKeyListener(this);

    this.add(panel,BorderLayout.CENTER);

    }

    /**

    * @param args

    */

    public static void main(String[] args) {

    // TODO Auto-generated method stub

    Caculator mainframe=new Caculator();

    mainframe.setTitle("testing Caculator");

    mainframe.setSize(400,400);

    mainframe.setVisible(true);

    }

    public void actionPerformed(ActionEvent e) {

    // TODO Auto-generated method stub

    if(e.getActionCommand()=="+"){

    x= Float.parseFloat(tf.getText());

    code=0;

    this.tf.setText("");

    }

    if(e.getActionCommand()=="-"){

    x= Float.parseFloat(tf.getText());

    code=1;

    this.tf.setText("");

    }

    if(e.getActionCommand()=="*"){

    x= Float.parseFloat(tf.getText());

    code=2;

    this.tf.setText("");

    }

    if(e.getActionCommand()=="/"){

    x= Float.parseFloat(tf.getText());

    code=3;

    this.tf.setText("");

    }

    if(e.getActionCommand()!="+"&&e.getActionCommand()!="-"&&e.getActionCommand()!="*"&&e.getActionCommand()!="/"&&e.getActionCommand()!="="){

    if(enable){

    if(first){

    System.out.println("haha");

    tf.setText(e.getActionCommand());

    first=false;

    }

    else {

    tf.setText(tf.getText()+e.getActionCommand());

    }

    }

    else {

    tf.setText(e.getActionCommand());

    enable=true;

    }

    }

    if(e.getActionCommand()=="="){

    switch(code){

    case 0:

    y=x+Float.parseFloat(this.tf.getText());

    tf.setText(Float.toString(y));

    enable=false;

    break;

    case 1:

    y=x-Float.parseFloat(this.tf.getText());

    tf.setText(Float.toString(y));

    enable=false;

    break;

    case 2:

    y=x*Float.parseFloat(this.tf.getText());

    tf.setText(Float.toString(y));

    enable=false;

    break;

    case 3:

    y=x/Float.parseFloat(this.tf.getText());

    tf.setText(Float.toString(y));

    enable=false;

    break;

    }

    }

    }

    public void keyPressed(KeyEvent e) {

    // TODO Auto-generated method stub

    if(e.getKeyChar()=='+'){

    x= Float.parseFloat(tf.getText());

    code=0;

    this.tf.setText("");

    }

    if(e.getKeyChar()=='-'){

    x= Float.parseFloat(tf.getText());

    code=1;

    this.tf.setText("");

    }

    if(e.getKeyChar()=='*'){

    x= Float.parseFloat(tf.getText());

    code=2;

    this.tf.setText("");

    }

    if(e.getKeyChar()=='/'){

    x= Float.parseFloat(tf.getText());

    code=3;

    this.tf.setText("");

    }

    if(e.getKeyChar()=='1'||e.getKeyChar()=='2'||e.getKeyChar()=='3'||e.getKeyChar()=='0'

    ||e.getKeyChar()=='4'||e.getKeyChar()=='5'||e.getKeyChar()=='6'||e.getKeyChar()=='.'

    ||e.getKeyChar()=='7'||e.getKeyChar()=='8'||e.getKeyChar()=='9'){

    System.out.println("hai");

    if(enable){

    if(first){

    System.out.println("hehe");

    str=Character.toString(e.getKeyChar());

    tf.setText(str);

    first=false;

    }

    else {

    str=Character.toString(e.getKeyChar());

    tf.setText(tf.getText()+str);

    }

    }

    else {

    str=Character.toString(e.getKeyChar());

    tf.setText(str);

    enable=true;

    }

    }

    if(e.getKeyCode()==KeyEvent.VK_ENTER){

    switch(code){

    case 0:

    y=x+Float.parseFloat(this.tf.getText());

    tf.setText(Float.toString(y));

    enable=false;

    break;

    case 1:

    y=x-Float.parseFloat(this.tf.getText());

    tf.setText(Float.toString(y));

    enable=false;

    break;

    case 2:

    y=x*Float.parseFloat(this.tf.getText());

    tf.setText(Float.toString(y));

    enable=false;

    break;

    case 3:

    y=x/Float.parseFloat(this.tf.getText());

    tf.setText(Float.toString(y));

    enable=false;

    break;

    }

    }

    }

    public void keyReleased(KeyEvent arg0) {

    // TODO Auto-generated method stub

    }

    public void keyTyped(KeyEvent arg0) {

    // TODO Auto-generated method stub

    }

    }