package week8_dentaku;

import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;

public class Dentaku extends JApplet {

  JTextField result = new JTextField(""); //計算結果を表示するテキストフィールド

  /**アプレットの初期化*/
  public void init() {
    //アプレットは、初期設定がBorderLayoutになっている
    this.getContentPane().add(result, BorderLayout.NORTH); //テキストフィールドを配置

    JPanel keyPanel = new JPanel();            //ボタンを配置するパネルを用意
    keyPanel.setLayout(new GridLayout(4,4));  //4行4列のGridLayoutにする
    this.getContentPane().add(keyPanel, BorderLayout.CENTER);

    keyPanel.add(new NumberButton("7"), 0);    //ボタンをレイアウトにはめこんでいく
    keyPanel.add(new NumberButton("8"), 1);
    keyPanel.add(new NumberButton("9"), 2);
    keyPanel.add(new JButton("÷"), 3);
    keyPanel.add(new NumberButton("4"), 4);
    keyPanel.add(new NumberButton("5"), 5);
    keyPanel.add(new NumberButton("6"), 6);
    keyPanel.add(new JButton("×"), 7);
    keyPanel.add(new NumberButton("1"), 8);
    keyPanel.add(new NumberButton("2"), 9);
    keyPanel.add(new NumberButton("3"), 10);
    keyPanel.add(new JButton("−"), 11);
    keyPanel.add(new NumberButton("0"), 12);
    keyPanel.add(new NumberButton("."), 13);
    keyPanel.add(new JButton("＋"), 14);
    keyPanel.add(new JButton("＝"), 15);

    this.getContentPane().add(new JButton(), BorderLayout.SOUTH);
          //Cボタンを配置する
  }

  /*  テキストフィールドに引数の文字列をつなげる */
  public void appendResult(String c)  {
    result.setText(result.getText() + c); //押したボタンの名前をつなげる
  }

  /*  数字を入力するボタンの定義 */
  public class NumberButton extends JButton implements ActionListener {
    public NumberButton(String keyTop)  {
      super(keyTop);    //JButtonクラスのコンストラクタを呼び出す
      this.addActionListener(this);   //このボタンにアクションイベントのリスナを設定
    }

    public void actionPerformed(ActionEvent evt)  {
      String keyNumber = this.getText();  //ボタンの名前を取り出す
      appendResult(keyNumber);    //ボタンの名前をテキストフィールドにつなげる
    }
  }

  //ルック＆フィールの設定
  static {
    try {
      UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
    }
    catch(Exception e) {
    }
  }
}