teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

数字ボタンの件を追加

2019/11/13 08:29

投稿

jimbe
jimbe

スコア13353

answer CHANGED
@@ -37,4 +37,34 @@
37
37
  button12.addActionListener(calcActionListener);
38
38
  button13.addActionListener(calcActionListener);
39
39
  button14.addActionListener(calcActionListener);
40
+ ```
41
+
42
+ ---
43
+ なお, やたらと並んでいる数字ボタン(オリジナルの NumberButton )も, 同様にできます.
44
+ 恐らく ActionListener を抜き出す際に JButton.getText が使えなくなって全部個別に並べることになったものと思います.
45
+ ```java
46
+ public class NumberActionListener implements ActionListener {
47
+ public void actionPerformed(ActionEvent evt) {
48
+ //String keyNumber = this.getText();
49
+ String keyNumber = ((JButton)evt.getSource()).getText(); //ボタンの名前を取り出す
50
+ appendResult(keyNumber); //ボタンの名前をテキストフィールドにつなげる
51
+ }
52
+ /* テキストフィールドに引数の文字列をつなげる */
53
+ public void appendResult(String c) {
54
+ if (!afterCalc) //演算子ボタンを押した直後でないなら
55
+ result.setText(result.getText() + c); //押したボタンの名前をつなげる
56
+ else {
57
+ result.setText(c); //押したボタンの文字列だけを設定する(いったんクリアしたかに見える)
58
+ afterCalc = false;
59
+ }
60
+ }
61
+ }
62
+ ```
63
+ ```java
64
+ ActionListener numberActionListener = new NumberActionListener ();
65
+ button1.addActionListener(numberActionListener);
66
+ button2.addActionListener(numberActionListener);
67
+ button3.addActionListener(numberActionListener);
68
+ button4.addActionListener(numberActionListener);
69
+ (以下略)
40
70
  ```