一般计算器的构成: 
一个显示区域 1.10个数字按钮 .和小数点 2.+-*/ 4个算符按 3. CE/C(清空键) 功能键 4.+/-转换 5.= 
思路是对按钮侦听,把事件流按上面的方法分为5组,用if分支来实现 
如果按了数字/. 就当作字符连接保存在临时变量中(String temp),直到按到 4个算符之一时,就分别保存 前面的表示按过的数字的字符串和 算符(比如存在 str1 和operator中),然后清空temp变量,再等待输入数字 当遇到=号时, 将 
temp 和str1 转化为int/Double,将两数按operator中的算符进行计算,放到文本区域上去.... 1.构造界面. 
2.对各个按钮实现ActionListener 
3.重写ActionListener方法,在此方法中实现上面说的... 
就按照这个做 意思我也了解但是但是我不会实现 都很敢 给举个例子也行 比如用加号的话 这个流程怎么写下来

解决方案 »

  1.   

    import javax.swing.*; 
    import java.awt.*; 
    import java.awt.event.*; public class Calculator extends JFrame implements ActionListener 

    private boolean dotExist, operated, equaled; // 演算時用
    private double storedNumber; // 今の結果
    private double a,b //aは一回目入力数字 bは二回目以降入力内容
    private double s,t // 計算領域
    private char lastOperator; // 前の演算子
    private JTextField operation; //text 
    private JButton dot, plus, minus, multi, div, sqrt, equal, clear; // 演算子
    private JButton[] numbers; // 数字 // はじめ
    public Calculator() 

    setTitle("Calculator"); 
    // 初始化変数
    dotExist = false; //  小数点 
    operated = false; // btn
    equaled = false; //  if "=" 
    storedNumber = 0; 
    lastOperator = '?'; 
    // 初始化窗口?量 
    operation = new JTextField("0"); 
    operation.setEditable(false); 
    numbers = new JButton[10]; 
    for (int i = 0; i < 10; i++) 
    numbers[i] = new JButton("" + i); 
    dot = new JButton("."); 
    plus = new JButton("+"); 
    minus = new JButton("-"); 
    multi = new JButton("*"); 
    div = new JButton("/"); 
    equal = new JButton("="); 
    clear = new JButton("AC"); 
    // 画面
    GridBagLayout layout = new GridBagLayout(); 
    getContentPane().setLayout(layout); 
    addComponent(layout, operation, 0, 0, 4, 1); 
    addComponent(layout, numbers[1], 1, 0, 1, 1); 
    addComponent(layout, numbers[2], 1, 1, 1, 1); 
    addComponent(layout, numbers[3], 1, 2, 1, 1); 
    addComponent(layout, numbers[4], 2, 0, 1, 1); 
    addComponent(layout, numbers[5], 2, 1, 1, 1); 
    addComponent(layout, numbers[6], 2, 2, 1, 1); 
    addComponent(layout, numbers[7], 3, 0, 1, 1); 
    addComponent(layout, numbers[8], 3, 1, 1, 1); 
    addComponent(layout, numbers[9], 3, 2, 1, 1); 
    addComponent(layout, dot, 4, 0, 1, 1); 
    addComponent(layout, numbers[0], 4, 1, 1, 1); 
    addComponent(layout, plus, 1, 3, 1, 1); 
    addComponent(layout, minus, 2, 3, 1, 1); 
    addComponent(layout, multi, 3, 3, 1, 1); 
    addComponent(layout, div, 4, 3, 1, 1); 
    addComponent(layout, equal, 5, 0, 2, 1); 
    addComponent(layout, clear, 5, 3, 1, 1); 
    } // バーテン メソッド
    public void actionPerformed(ActionEvent e) 

    JButton btn = (JButton)e.getSource(); 
    if (btn == clear) 

    operation.setText("0"); 
    dotExist = false; 
    storedNumber = 0; 
    lastOperator = '?'; 
    a=0;
    b=0
    S=0
    T=0

    else if (btn == JButton[] numbers) 

    if lastOperator="?"
    {
    a =a & storedNumber
    storedNumbe = a
    }
    else if 
    {
    b =b & storedNumber
    storedNumbe = a
    }
    } else if (lastOperator="?") 
    if (btn == plus)
    {
    operate('+'); 
    equaled = false; 

    else if (btn == minus) 

    operate('-'); 
    equaled = false; 

    else if (btn == multi) 

    operate('*'); 
    equaled = false; 

    else if (btn == div) 

    operate('/'); 
    equaled = false; 

    else if()
    {
    s=a
    a=0
    lastOperator = " btn "
    }
    else if (equaled = ture)
    {
    if (btn == plus)
    {
    operate('+'); 

    else if (btn == minus) 

    operate('-'); 

    else if (btn == multi) 

    operate('*'); 

    else if (btn == div) 

    operate('/'); 
    } } 
    else 

    if (equaled) 
    storedNumber = 0; 
    for (int i = 0; i < 10; i++) 
    if (btn == numbers[i]) 

    if (operation.getText().equals("0")) 
    operation.setText("" + i); 
    else if(! operated) 
    operation.setText(operation.getText() + i); 
    else 

    operation.setText("" + i); 
    operated = false; 


    if (btn == dot && ! dotExist) 

    operation.setText(operation.getText() + "."); 
    dotExist = true; 



    // 演算
    private void operate(char operator) 

    double t = Double.valueOf(operation.getText()).doubleValue(); 
    if (lastOperator == '+' && equaled = false) 
    b=operation.getText()
    t=b
    b=0
    U=s+t
    lastOperator == "btn"
    operation.getText(); 
    s=U
    else if (lastOperator == '-'&& equaled = false) 
    b=operation.getText()
    t=b
    b=0
    U=s-t
    lastOperator == "btn'"
    operation.getText(); 
    s=U
    else if (lastOperator == '*' && equaled = false) 
    b=operation.getText()
    t=b
    b=0
    U=s * t
    lastOperator == "btn"
    operation.getText(); 
    s=U
    else if (lastOperator == '/' && equaled = false) 
    b=operation.getText()
    t=b
    b=0
    U=s * t
    lastOperator == "btn"
    operation.getText(); 
    s=U
    else if (lastOperator == '+' && equaled ) 
    b=operation.getText()
    t=b
    b=0
    U=s + t
    lastOperator == "?"
    operation.getText(); 
    a=U
    else if (lastOperator == '-' && equaled ) 
    b=operation.getText()
    t=b
    b=0
    U=s - t
    lastOperator == "?"
    operation.getText(); 
    a=U
    else if (lastOperator == '*' && equaled ) 
    b=operation.getText()
    t=b
    b=0
    U=s * t
    lastOperator == "?"
    operation.getText(); 
    a=U
    else if (lastOperator == '/' && equaled ) 
    b=operation.getText()
    t=b
    b=0
    U=s / t
    lastOperator == "?"
    operation.getText(); 
    a=U} 
    // GridBagLayout メソッド 
    private void addComponent(GridBagLayout layout, Component component, int row, int col, int width, int height) 

    GridBagConstraints constraints = new GridBagConstraints(); 
    constraints.fill = GridBagConstraints.BOTH; 
    constraints.insets = new Insets(10, 2, 10, 2); 
    constraints.weightx = 100; 
    constraints.weighty = 100; 
    constraints.gridx = col; 
    constraints.gridy = row; 
    constraints.gridwidth = width; 
    constraints.gridheight = height; 
    layout.setConstraints(component, constraints); 
    if (component instanceof JButton) 
    ((JButton)component).addActionListener(this); 
    getContentPane().add(component); 

    //windows
    public static void main(String[] args) 

    Calculator calc = new Calculator(); 
    calc.setSize(290, 400); 
    calc.setVisible(true); 


      

  2.   

    /*
     * Created on 2007-12-5
     *
     * TODO To change the template for this generated file go to
     * Window - Preferences - Java - Code Style. - Code Templates
     *//**
     * @author Administrator
     *
     * TODO To change the template for this generated type comment go to Window -
     * Preferences - Java - Code Style. - Code Templates
     */import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;public class jsq {
     public static void main(String args[]) {
      myframe. kk = new myframe();
     }
    }//版本声明
    class About extends JDialog {
     public About(Frame. parent) {
      super(parent, true);
      initComponents();
      pack();
      setSize(250, 150);
      setLocationRelativeTo(parent);
     } private void initComponents() {
      jTextField1 = new JTextField();
      jTextField2 = new JTextField();
      setTitle("版本声明");
      setResizable(false);//定义面板大小为固定  addWindowListener(new WindowAdapter() {
       public void windowClosing(WindowEvent evt) {
        closeDialog(evt);
       }
      });  jTextField1.setEditable(false);
      jTextField1.setText("计算器版本号: 1.0       ");
      jTextField1.setBackground(Color.lightGray);  jTextField2.setEditable(false);
      jTextField2.setText("            ---开发者:wk");  getContentPane().add(jTextField1, BorderLayout.NORTH);
      getContentPane().add(jTextField2, BorderLayout.CENTER);
     } private void closeDialog(WindowEvent evt) {
      setVisible(false);
      dispose();
     } private JTextField jTextField1; private JTextField jTextField2;
    }class myframe. extends Frame. implements ActionListener, MouseListener,
      WindowListener { MenuBar myB = new MenuBar(); Menu menu1, menu2; char ch; //存储字符串中取得的一个字符 boolean ft1 = false; //标志小数点 boolean ft2 = false; //标志符号位 double firstNum = 0; //存储输入运算符前的数据 double nextNum = 0; //存储输入运算符后的数据 double resultNum = 0; //算得最终浮点型结果 String yunsuanfu = new String(); //存储输入的运算符 String linshiStr = new String(); //存储临时的字符串 String resultStr = new String(); //存储算得的最终字符串型结果 String ss = new String(); //存储鼠标点击的按钮标号 String fuzhi = new String(); //存储复制的字符串 TextField shuru; Button bt1[], bt2[]; Panel pa1, pa2; GridLayout gri1, gri2; myframe() {
      super("计算器 1.0");
      setBackground(Color.lightGray);//设置面板背景色
      setSize(500, 200);
      setResizable(false);//定义面板大小为固定
      setLayout(new BorderLayout(5, 5));
      setMenuBar(myB);  menu1 = new Menu("编辑(V)");
      MenuItem menu11 = new MenuItem("复制");
      MenuItem menu12 = new MenuItem("粘贴");
      MenuItem menu13 = new MenuItem("退出");
      MenuShortcut msc1 = new MenuShortcut(KeyEvent.VK_C);
      MenuShortcut msc2 = new MenuShortcut(KeyEvent.VK_V);
      MenuShortcut msc3 = new MenuShortcut(KeyEvent.VK_X);
      menu11.setShortcut(msc1);
      menu12.setShortcut(msc2);
      menu13.setShortcut(msc3);
      menu1.add(menu11);
      menu1.add(menu12);
      menu1.add(menu13);
      menu1.addActionListener(this);
      myB.add(menu1);  menu2 = new Menu("帮助(H)");
      menu2.add("帮助主题");
      menu2.add("版本声明");
      menu2.addActionListener(this);
      myB.add(menu2);  shuru = new TextField(37);
      add(shuru);
      shuru.addActionListener(this);  gri1 = new GridLayout(1, 3, 10, 10);
      pa1 = new Panel();
      pa1.setLayout(gri1);  gri2 = new GridLayout(4, 5, 10, 5);
      pa2 = new Panel();
      pa2.setLayout(gri2);  bt1 = new Button[3];
      String k1[] = { "Sqrt", "Backspace", "1/x" };
      for (int i = 0; i < 3; i++) {
       bt1[i] = new Button(k1[i]);
       bt1[i].setForeground(Color.red);//设置按钮上字体的颜色
       pa1.add(bt1[i]);
       bt1[i].addActionListener(this);
      }  bt2 = new Button[20];
      String k2[] = { "7", "8", "9", "+", "Exit", "4", "5", "6", "-", "CE",
        "1", "2", "3", "*", "C", "0", "+/-", ".", "/", "=" };
      for (int i = 0; i < 20; i++) {
       bt2[i] = new Button(k2[i]);
       pa2.add(bt2[i]);
       if (i == 3 || i == 8 || i == 13 || i == 18 || i == 19)
        bt2[i].setForeground(Color.red);//设置按钮上字体的颜色
       else
        bt2[i].setForeground(Color.blue);//设置按钮上字体的颜色
       bt2[i].addActionListener(this);
      }  addMouseListener(this);
      addWindowListener(this);
      add(shuru, BorderLayout.NORTH);
      add(pa1, BorderLayout.CENTER);
      add(pa2, BorderLayout.SOUTH);
      pack();
      show();
     } public void actionPerformed(ActionEvent e) {
      ss = e.getActionCommand();//存储所按按钮的标识  if (ss.equals("版本声明"))
       new About(this).show();  //开平方
      try {
       if (ss.equals("Sqrt")) {
        linshiStr = shuru.getText();
        firstNum = Double.parseDouble(linshiStr);
        if (firstNum < 0)
         throw new FuShu();
        if (linshiStr.equals(""))
         shuru.setText("");
        else if (linshiStr != null) {
         resultNum = Math.sqrt(firstNum);
         resultStr = Double.toString(resultNum);
         shuru.setText(resultStr);
         firstNum = resultNum;
        }
       }
      } catch (FuShu ee) {
       shuru.setText("请输入一个正数!");
       resultStr = shuru.getText();
      }  //利用循环将当前字符串中的最后一个字母删除
      if (ss.equals("Backspace")) {
       linshiStr = shuru.getText();
       if (!resultStr.equals(linshiStr)) {
        shuru.setText("");
        for (int i = 0; i < linshiStr.length() - 1; i++) {
         ch = linshiStr.charAt(i);
         shuru.setText(shuru.getText() + ch);
        }
        if (shuru.getText().equals("-")
          || shuru.getText().equals("-0.")) {
         shuru.setText("");
         linshiStr = null;
        }
       }
      }
      

  3.   

      //求倒数
      if (ss.equals("1/x")) {
       linshiStr = shuru.getText();
       if (linshiStr.equals(""))
        shuru.setText("");
       else {
        firstNum = Double.parseDouble(linshiStr);
        resultNum = 1 / firstNum;
        resultStr = Double.toString(resultNum);
        shuru.setText(resultStr);
       }
      }  if (ss.equals("0")) {
       linshiStr = shuru.getText();
       if (resultStr.equals(linshiStr))
        shuru.setText("0");
       else {
        if (linshiStr.equals(""))
         shuru.setText("0");
        else if (linshiStr.equals("0"))
         shuru.setText("0");
        else
         shuru.setText(linshiStr + "0");
       }
      }  if (ss.equals("1")) {
       linshiStr = shuru.getText();
       if (resultStr.equals(linshiStr))
        shuru.setText("1");
       else {
        if (linshiStr.equals(""))
         shuru.setText("1");
        else if (linshiStr.equals("0"))
         shuru.setText("1");
        else
         shuru.setText(linshiStr + "1");   }
      }  if (ss.equals("2")) {
       linshiStr = shuru.getText();
       if (resultStr.equals(linshiStr))
        shuru.setText("2");
       else {
        if (linshiStr.equals(""))
         shuru.setText("2");
        else if (linshiStr.equals("0"))
         shuru.setText("2");
        else
         shuru.setText(linshiStr + "2");   }
      }  if (ss.equals("3")) {
       linshiStr = shuru.getText();
       if (resultStr.equals(linshiStr))
        shuru.setText("3");
       else {
        if (linshiStr.equals(""))
         shuru.setText("3");
        else if (linshiStr.equals("0"))
         shuru.setText("3");
        else
         shuru.setText(linshiStr + "3");   }
      }  if (ss.equals("4")) {
       linshiStr = shuru.getText();
       if (resultStr.equals(linshiStr))
        shuru.setText("4");
       else {
        if (linshiStr.equals(""))
         shuru.setText("4");
        else if (linshiStr.equals("0"))
         shuru.setText("4");
        else
         shuru.setText(linshiStr + "4");   }
      }  if (ss.equals("5")) {
       linshiStr = shuru.getText();
       if (resultStr.equals(linshiStr))
        shuru.setText("5");
       else {
        if (linshiStr.equals(""))
         shuru.setText("5");
        else if (linshiStr.equals("0"))
         shuru.setText("5");
        else
         shuru.setText(linshiStr + "5");   }
      }  if (ss.equals("6")) {
       linshiStr = shuru.getText();
       if (resultStr.equals(linshiStr))
        shuru.setText("6");
       else {
        if (linshiStr.equals(""))
         shuru.setText("6");
        else if (linshiStr.equals("0"))
         shuru.setText("6");
        else
         shuru.setText(linshiStr + "6");   }
      }  if (ss.equals("7")) {
       linshiStr = shuru.getText();
       if (resultStr.equals(linshiStr))
        shuru.setText("7");
       else {
        if (linshiStr.equals(""))
         shuru.setText("7");
        else if (linshiStr.equals("0"))
         shuru.setText("7");
        else
         shuru.setText(linshiStr + "7");   }
      }  if (ss.equals("8")) {
       linshiStr = shuru.getText();
       if (resultStr.equals(linshiStr))
        shuru.setText("8");
       else {
        if (linshiStr.equals(""))
         shuru.setText("8");
        else if (linshiStr.equals("0"))
         shuru.setText("8");
        else
         shuru.setText(linshiStr + "8");   }
      }  if (ss.equals("9")) {
       linshiStr = shuru.getText();
       if (resultStr.equals(linshiStr))
        shuru.setText("9");
       else {
        if (linshiStr.equals(""))
         shuru.setText("9");
        else if (linshiStr.equals("0"))
         shuru.setText("9");
        else
         shuru.setText(linshiStr + "9");   }
      }  //设置浮点位
      if (ss.equals(".")) {
       linshiStr = shuru.getText();
       if (linshiStr.equals(""))
        shuru.setText("0.");
       else if (linshiStr.equals("-"))
        shuru.setText("-0.");
       else {
        for (int i = 0; i < linshiStr.length(); i++) {
         if (linshiStr.charAt(i) == '.')
          ft1 = true;
        }
        if (ft1 == true)
         shuru.setText(linshiStr);
        else
         shuru.setText(linshiStr + ".");
       }
      }  //加法运算
      if (ss.equals("+")) {
       ft1 = false;
       linshiStr = shuru.getText();
       if (linshiStr.equals(""))
        shuru.setText("");
       else {
        yunsuanfu = "+";
        if (firstNum == 0)
         firstNum = Double.parseDouble(linshiStr);
        shuru.setText("");
        linshiStr = "";
       }
      }  //减法运算
      if (ss.equals("-")) {
       ft1 = false;
       linshiStr = shuru.getText();
       if (linshiStr.equals(""))
        shuru.setText("");
       else {
        yunsuanfu = "-";
        if (firstNum == 0)
         firstNum = Double.parseDouble(linshiStr);
        shuru.setText("");
        linshiStr = "";
       }
      }  //乘法运算
      if (ss.equals("*")) {
       ft1 = false;
       linshiStr = shuru.getText();
       if (linshiStr.equals(""))
        shuru.setText("");
       else {
        yunsuanfu = "*";
        if (firstNum == 0)
         firstNum = Double.parseDouble(linshiStr);
        shuru.setText("");
        linshiStr = "";
       }
      }  //除法运算
      if (ss.equals("/")) {
       ft1 = false;
       linshiStr = shuru.getText();
       if (linshiStr.equals(""))
        shuru.setText("");
       else {
        yunsuanfu = "/";
        if (firstNum == 0) {
         linshiStr = shuru.getText();
         firstNum = Double.parseDouble(linshiStr);
        }
        shuru.setText("");
        linshiStr = "";
       }
      }  //显示运算结果
      if (ss.equals("=")) {
       ft1 = false;
       linshiStr = shuru.getText();
       if (linshiStr.equals(""))
        shuru.setText("");
       else {
        nextNum = Double.parseDouble(linshiStr);
        if (yunsuanfu == "+")
         resultNum = firstNum + nextNum;
        else if (yunsuanfu == "-")
         resultNum = firstNum - nextNum;
        else if (yunsuanfu == "*")
         resultNum = firstNum * nextNum;
        else if (yunsuanfu == "/")
         resultNum = firstNum / nextNum;
        resultStr = Double.toString(resultNum);
        shuru.setText(resultStr);
        yunsuanfu = linshiStr = "";
        firstNum = resultNum;
        nextNum = 0;
       }
      }  //设置符号位
      if (ss.equals("+/-")) {
       linshiStr = shuru.getText();
       if (!linshiStr.equals("0") && !linshiStr.equals("0.0")) {
        for (int i = 0; i < linshiStr.length(); i++)
         if (linshiStr.charAt(i) == '-')
          ft2 = true;
        if (ft2 == true) {
         shuru.setText(linshiStr.substring(1));
         ft2 = false;
        } else
         shuru.setText("-" + linshiStr);
       }
      }  //清除当前值
      if (ss.equals("CE")) {
       ft1 = false;
       shuru.setText("");
      }  //全部清零
      if (ss.equals("C")) {
       ft1 = false;
       shuru.setText("");
       yunsuanfu = linshiStr = "";
       firstNum = nextNum = 0;
      }  //单击按钮"Exit"结束小程序
      if (ss.equals("Exit"))
       System.exit(0);  //按Ctrl + c 或是单击菜单"复制"选项,复制当前文本框数据
      if (ss.equals("复制"))
       fuzhi = shuru.getText();  //按Ctrl + v 或是单击菜单"粘贴"选项,将复制的数据置入文本框中
      if (ss.equals("粘贴"))
       shuru.setText(fuzhi);  //按Ctrl + x 或是单击菜单"退出"选项,结束小程序
      if (ss.equals("退出"))
       System.exit(0);
     } private String sqrt(double b12) {
      // TODO 自动生成方法存根
      return null;
     } // 创建异常
     class FuShu extends Exception {
      FuShu() {
      }  public String toString() {
       return "请输入一个正数!";
      }
     } public void windowClosing(MouseEvent e) {
      dispose();
      System.exit(0);
     } public void mouseClicked(MouseEvent arg0) { } public void mouseEntered(MouseEvent arg0) { } public void mouseExited(MouseEvent arg0) { } public void mousePressed(MouseEvent arg0) { } public void mouseReleased(MouseEvent arg0) { } public void windowActivated(WindowEvent arg0) { } public void windowClosed(WindowEvent arg0) { } public void windowClosing(WindowEvent arg0) { } public void windowDeactivated(WindowEvent arg0) { } public void windowDeiconified(WindowEvent arg0) { } public void windowIconified(WindowEvent arg0) { } public void windowOpened(WindowEvent arg0) { }
    }
      

  4.   

    我重新改过的 请大家给予找错误吧
    import javax.swing.*; 
    import java.awt.*; 
    import java.awt.event.*; public class Calculator extends JFrame implements ActionListener 

    private boolean dotExist, operated, equaled; // 演算時用
    private double storedNumber; // 今の結果
    private double a,b //aは一回目入力数字 bは二回目以降入力内容
    private double s,t // 計算領域
    private char lastOperator; // 前の演算子
    private JTextField operation; //text 
    private JButton dot, plus, minus, multi, div,  equal, clear; // 演算子
    private JButton[] numbers; // 数字 // はじめ
    public Calculator() 

    setTitle("Calculator"); 
    // 初始化変数
    dotExist = false; // 小数点 
    operated = false; // if btn
    equaled = false; //  if "=" 
    storedNumber = 0; 
    lastOperator = '?'; 
    // 初始化窗口?量 
    JTextField operation = new JTextField("0"); 
    operation.setEditable(false); 
    JButton numbers = new JButton[10]; 
    for (int i = 0; i < 10; i++) 
    JButton numbers[i] = new JButton("" + i); 
    JButton dot = new JButton("."); 
    JButton plus = new JButton("+"); 
    JButton minus = new JButton("-"); 
    JButton multi = new JButton("*"); 
    JButton div = new JButton("/"); 
    JButton equal = new JButton("="); 
    JButton clear = new JButton("AC"); 
    // 画面
    GridBagLayout layout = new GridBagLayout(); 
    getContentPane().setLayout(layout); 
    addComponent(layout, operation, 0, 0, 4, 1); 
    addComponent(layout, numbers[1], 1, 0, 1, 1); 
    addComponent(layout, numbers[2], 1, 1, 1, 1); 
    addComponent(layout, numbers[3], 1, 2, 1, 1); 
    addComponent(layout, numbers[4], 2, 0, 1, 1); 
    addComponent(layout, numbers[5], 2, 1, 1, 1); 
    addComponent(layout, numbers[6], 2, 2, 1, 1); 
    addComponent(layout, numbers[7], 3, 0, 1, 1); 
    addComponent(layout, numbers[8], 3, 1, 1, 1); 
    addComponent(layout, numbers[9], 3, 2, 1, 1); 
    addComponent(layout, dot, 4, 0, 1, 1); 
    addComponent(layout, numbers[0], 4, 1, 1, 1); 
    addComponent(layout, plus, 1, 3, 1, 1); 
    addComponent(layout, minus, 2, 3, 1, 1); 
    addComponent(layout, multi, 3, 3, 1, 1); 
    addComponent(layout, div, 4, 3, 1, 1); 
    addComponent(layout, equal, 5, 0, 2, 1); 
    addComponent(layout, clear, 5, 3, 1, 1); 
    } // バーテン メソッド
    public void actionPerformed(ActionEvent e) 

    JButton btn = (JButton)e.getSource(); 
    if (btn == clear) 

    operation.setText("0"); 
    dotExist = false; 
    storedNumber = 0; 
    lastOperator = '?'; 
    a = 0;
    b = 0;
    S = 0;
    T = 0;

    else if (btn == numbers[i]) 

    if (lastOperator = '?')
    {
    a == a & storedNumber;
    storedNumbe == a;
    }
    else if 
    {
    b =b & storedNumber;
    storedNumbe = a;
    }

    else if ( btn == plus|btn == plus| btn == plus | btn == plus) 
    {
        if (lastOperator= "?")
    if (btn == plus)
    {
    operate('+'); 
    equaled = false; 

    else if (btn == minus) 

    operate('-'); 
    equaled = false; 

    else if (btn == multi) 

    operate('*'); 
    equaled = false; 

    else if (btn == div) 

    operate('/'); 
    equaled = false; 

    else if( lastOperator = "?")
    {
    s = a;
    a = 0;
    lastOperator = " btn ";
    }
    }
    else if ( btn == equal )
    {
    if (lastOperator == plus)
    {
    operate('+'); 

    else if (lastOperator == minus) 

    operate('-'); 

    else if (lastOperator == multi) 

    operate('*'); 

    else if (lastOperator == div) 

    operate('/'); 
    } } 
    else 

    if (equaled) 
    storedNumber = 0; 
    for (int i = 0; i < 10; i++) 
    if (btn == numbers[i]) 

    if (operation.getText().equals("0")) 
    operation.setText("" + i); 
    else if(! operated) 
    operation.setText(operation.getText() + i); 
    else 

    operation.setText("" + i); 
    operated = false; 


    if (btn == dot && ! dotExist) 

    operation.setText(operation.getText() + "."); 
    dotExist = true; 



    // 演算
    private void operate(char operator) 

    double t = Double.valueOf(operation.getText()).doubleValue(); 
    if (lastOperator == '+' && equaled = false) 
    {
    b = operation.getText();
    t = b;
    b = 0;
    storedNumbe = s + t;
    lastOperator = "btn";
    operation.getText() = storedNumbe;
    s = storedNumbe;
    else if (lastOperator == '-'&& equaled = false) 
    {
    b = operation.getText();
    t = b;
    b = 0;
    storedNumbe = s - t;
    lastOperator = "btn";
    operation.getText() = storedNumbe;
    s = storedNumbe;
    }
    else if (lastOperator == '*' && equaled = false) 
    {
    b = operation.getText();
    t = b;
    b = 0;
    storedNumbe = s * t;
    lastOperator = "btn";
    operation.getText() = storedNumbe;
    s = storedNumbe;
    }
    else if (lastOperator == '/' && equaled = false) 
    {
    b = operation.getText();
    t = b;
    b = 0;
    storedNumbe = s * t;
    lastOperator = "btn";
    operation.getText() = storedNumbe;
    s = storedNumbe;
    }
    else if (lastOperator == '+' && equaled ) 
    {
    b = operation.getText();
    t = b;
    b = 0;
    storedNumbe = s + t;
    lastOperator = '?';
    operation.getText() = storedNumbe;
    a = storedNumbe;
    }
    else if (lastOperator == '-' && equaled ) 
    {
    b = operation.getText();
    t = b;
    b = 0;
    storedNumbe = s - t;
    lastOperator == "?";
    operation.getText() = storedNumbe;
    a = storedNumbe;
    }
    else if (lastOperator == '*' && equaled ) 
    {
    b = operation.getText();
    t = b;
    b = 0;
    storedNumbe = s * t;
    lastOperator = "?";
    operation.getText() = storedNumbe; 
    a = storedNumbe;
    }
    else if (lastOperator == '/' && equaled ) 
    {
    b = operation.getText();
    t = b;
    b = 0;
    storedNumbe = s / t;
    lastOperator = "?";
    operation.getText()= storedNumbe;
    a = storedNumbe;
    }

    // GridBagLayout メソッド 
    private void addComponent(GridBagLayout layout, Component component, int row, int col, int width, int height) 

    GridBagConstraints constraints = new GridBagConstraints(); 
    constraints.fill = GridBagConstraints.BOTH; 
    constraints.insets = new Insets(10, 2, 10, 2); 
    constraints.weightx = 100; 
    constraints.weighty = 100; 
    constraints.gridx = col; 
    constraints.gridy = row; 
    constraints.gridwidth = width; 
    constraints.gridheight = height; 
    layout.setConstraints(component, constraints); 
    if (component instanceof JButton) 
    ((JButton)component).addActionListener(this); 
    getContentPane().add(component); 

    //windows
    public static void main(String[] args) 

    Calculator calc = new Calculator(); 
    calc.setSize(290, 400); 
    calc.setVisible(true);