押されたボタンを認識して、何ボタンが押されたかをディスプレイに反映させる。
package swingsam;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.prefs.BackingStoreException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Calctest extends JFrame implements ActionListener {
JPanel pane;
JTextField display;
String start = " ";
public Calctest(String s) {
super(s);
pane = new JPanel(new GridLayout(1, 1)); // 結果表示のためのパネル
display = new JTextField(); // 結果表示のためのテキストエリア
// フレームの構成
this.setSize(320, 240);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setLayout(new BorderLayout());
// ボタンなど、画面の構成
this.add(pane); // 結果表示のためのパネルをフレームに組み込む
pane.add(display);// 結果表示のためのテキストエリアをパネルにはめ込んで見えるようにする
display.setHorizontalAlignment(JTextField.RIGHT);// テキストエリアのカーソルを右側に出す
JPanel pane1 = new JPanel(new GridLayout(5, 4));// ボタン配置のためのパネル
String btnface[] = { "BS", "CL", "AC", "1", "2", "3", "+", "4", "5",
"6", "-", "7", "8", "9", "/", "0", "=", "+/-", "*" }; // ボタンの表示を作る
String actionCommand[] = { "BS", "CL", "AC", "1", "2", "3", "+", "4",
"5", "6", "-", "7", "8", "9", "/", "0", "=", "+/-", "*" };
JLabel dummy = new JLabel();// 無記入のラベルをひとつ作る
pane1.add(dummy);// pane1の1番始めのグリッドを空白にするためにひとつ付け足す
JButton btn;
for (int i = 0; i < btnface.length; i++) {
btn = new JButton(btnface[i]);
btn.addActionListener(this); // ActionListenerをbtn(作成したボタン)にadd(付け加えて)している。これでpublic
// void actionPerformed(ActionEvent
// e) が呼び出されるようになった!
btn.setActionCommand(actionCommand[i]); // actionCommandをセットして、ボタンの中身の判断が出来るようにする。(全部数字でそろえてifで判定できるようにする)
pane1.add(btn);
}
this.add(pane, BorderLayout.NORTH);
this.add(pane1, BorderLayout.CENTER);
pane.setBackground(new Color(00, 00, 00));
this.setVisible(true);
display("0");
}
public void display(String t) {
display.setText(t);
}
public void actionPerformed(ActionEvent e) {
String cmd = e.getActionCommand();// まず、getActionCommandでボタンが押されたとき、そのボタンに設定されているActionCommand(set.ActionCommandで設定している。)をcmdに格納する。
if (cmd.equals("BS")) { // if文を使って何ボタンが押されたかを判定していきます。
display("BS");
} else if (cmd.equals("CL")) {
display("CL");
} else if (cmd.equals("AC")) {
display("AC");
} else if (cmd.equals("1")) {
display("1");
} else if (cmd.equals("2")) {
display("2");
} else if (cmd.equals("3")) {
display("3");
} else if (cmd.equals("4")) {
display("4");
} else if (cmd.equals("5")) {
display("5");
} else if (cmd.equals("6")) {
display("6");
} else if (cmd.equals("7")) {
display("7");
} else if (cmd.equals("8")) {
display("8");
} else if (cmd.equals("9")) {
display("9");
} else if (cmd.equals("0")) {
display("0");
} else if (cmd.equals("+")) {
display("+");
} else if (cmd.equals("-")) {
display("-");
} else if (cmd.equals("+/-")) {
display("+/-");
} else if (cmd.equals("*")) {
display("*");
} else if (cmd.equals("/")) {
display("/");
} else if (cmd.equals("=")) {
display("=");
}
// TODO 自動生成されたメソッド・スタブ
}
public static void main(String[] args) {
Calctest frame = new Calctest("電卓");
}
}